summaryrefslogtreecommitdiff
path: root/tests/exec/redef2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/exec/redef2.cpp')
-rw-r--r--tests/exec/redef2.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/exec/redef2.cpp b/tests/exec/redef2.cpp
new file mode 100644
index 0000000..49b06e2
--- /dev/null
+++ b/tests/exec/redef2.cpp
@@ -0,0 +1,34 @@
+#include <iostream>
+
+class A {
+public:
+ virtual int f(int x);
+};
+
+int A::f(int x) { return x; }
+
+class B : public A {
+public:
+};
+
+class C : public B {
+public:
+ virtual int f(int x);
+};
+
+int C::f(int x) { return 3*x; }
+
+int main() {
+ A *a = new A();
+ std::cout << a->f(1) << "\n";
+ B *b = new B();
+ std::cout << b->f(1) << "\n";
+ C *c = new C();
+ std::cout << c->f(1) << "\n";
+ a = b;
+ std::cout << a->f(1) << "\n";
+ a = c;
+ std::cout << a->f(1) << "\n";
+ b = c;
+ std::cout << b->f(1) << "\n";
+}