#include <iostream>
using namespace std;
class base {
public:
void Iam() { cout << "base::Iam()" << endl; }
virtual void Iam_v() { cout << "base::Iam_v()" << endl; }
};
class drvd : public base {
public:
virtual void Iam() { cout << "drvd::Iam()" << endl; }
virtual void Iam_v() { cout << "drvd::Iam_v()" << endl; }
};
class drvddrvd : public drvd {
public:
virtual void Iam() { cout << "drvddrvd::Iam()" << endl; }
virtual void Iam_v() { cout << "drvddrvd::Iam_v()" << endl; }
};
int main() {
base b;
drvd d;
drvddrvd dd;
base *pb;
drvd *pd;
b.Iam();
b.Iam_v();
d.Iam();
d.Iam_v();
dd.Iam();
dd.Iam_v();
pb = &b;
pb->Iam();
pb->Iam_v();
pb = &d;
pb->Iam();
pb->Iam_v();
pb = ⅆ
pb->Iam();
pb->Iam_v();
pd = &d;
pd->Iam();
pd->Iam_v();
pd = ⅆ
pd->Iam();
pd->Iam_v();
}