// File: ex7-10.cpp

#include <iostream>
using namespace std;

class B
{
public:
B() { cout << "B ctor called for " << this << endl;}
void funk1() { cout << "B::funk1() called for " << this << endl; }
virtual void funk2() { cout << "B::funk2() called for " << this << endl; }
};

class D : public B
{
public:
D() { cout << "D ctor called for " << this << endl;}
void funk1() { cout << "D::funk1() called for " << this << endl; }
virtual void funk2() { cout << "D::funk2() called for " << this << endl; }
};

int main()
{
B b;
D d;
cout << endl;

b.funk1();
d.funk1();
cout << endl;

b.funk2();
d.funk2();
cout << endl;

B* pB;
pB = &b;
pB->funk1();
pB->funk2();
cout << endl;

pB = &d;
pB->funk1();
pB->funk2();

cout << endl;

cout << "size of b = " << sizeof b << endl;
cout << "size of d = " << sizeof d << endl;
}