#include <iostream>
using namespace std;
class A {
public:
A() {
cout << "A()" << endl;
}
virtual void vt() {
cout << "vt A" << endl;
}
virtual ~A() {
cout << "~A()" << endl;
}
};
class B: public A {
public:
B(): A() {
cout << "B()" << endl;
}
virtual void vt() {
cout << "vt B" << endl;
}
virtual ~B() {
cout << "~B()" << endl;
}
};
int main() {
B b;
A *a;
a = &b;
a->vt();
A *pa;
B *pb = new B();
pb->vt();
pa = dynamic_cast<A *> (pb);
pa->vt();
delete pa;
}
#include <iostream>
using namespace std;
class base {
public:
virtual void bar() {
cout << "base bar" << endl;
}
void foo() {
cout << "base foo" << endl;
bar();
}
};
class drive: public base {
public:
void bar() {
cout << "drive bar" << endl;
}
void foo() {
cout << "drive foo" << endl;
}
};
int main() {
base *b = new drive();
b->foo();
}