diff options
author | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-01-08 22:59:02 +0100 |
---|---|---|
committer | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-01-08 22:59:02 +0100 |
commit | ce876db1ef52af3c0b1a89b18a08279a5aea3d9d (patch) | |
tree | 8abc918f6db7a3e9eaeb83d5900053bac8b4cde5 /tests/exec/multisuper2.cpp | |
parent | 97962c7823fd8bfca3a94909bb4b6f14ad967735 (diff) | |
parent | 56fdab2ff0caaaa88a152ef06aef821f432fe488 (diff) | |
download | LPC-Projet-ce876db1ef52af3c0b1a89b18a08279a5aea3d9d.tar.gz LPC-Projet-ce876db1ef52af3c0b1a89b18a08279a5aea3d9d.zip |
Merge branch 'codegen-alex' into codegen-alex-opt
Diffstat (limited to 'tests/exec/multisuper2.cpp')
-rw-r--r-- | tests/exec/multisuper2.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/exec/multisuper2.cpp b/tests/exec/multisuper2.cpp new file mode 100644 index 0000000..42d51ac --- /dev/null +++ b/tests/exec/multisuper2.cpp @@ -0,0 +1,68 @@ +#include <iostream> + +class A { + public: + int y; + A(); + virtual int f(int x); +}; + +class B { + public: + int z; + B(); + int g(int x); +}; + +class C : public A, public B { + public: + int q; + C(); + virtual int f(int x); + int g(int x); +}; + +A::A() { + y = 12; +} + +B::B() { + z = 7; +} + +C::C() { + q = 11; +} + +int A::f(int x) { + return x * y; +} + +int B::g(int x) { + return x * z; +} + +int C::f(int x) { + return x * q; +} + +int C::g(int x) { + return x * q * 404; +} + +int main() { + A test2; + std::cout << "A.f(1) = " << test2.f(1) << "\n"; + + B test3; + std::cout << "B.g(1) = " << test3.g(1) << "\n"; + + C test; + std::cout << "C.f(1) = " << test.f(1) << "\n"; + std::cout << "C.g(1) = " << test.g(1) << "\n"; + A *q = &test; + std::cout << "(C as A).f(1) = " << q->f(1) << "\n"; + B *r = &test; + std::cout << "(C as B).g(1) = " << r->g(1) << "\n"; +} + |