#include<iostream.h>
class A{
public:
A(){}
virtual void f()
{cout<<"A::f() called"<<endl;
}
};
class B:public A
{
public:
B(){f();}
void g(){f();}
};
class C:public B{
public:
C(){}
void f(){cout<<"C::f() called"<<endl;}
};
void main()
{
C c;//输出A::f() called
c.g();//输出C::f() called
}
//这是因为在建立C类的对象c时,它所包含的基类子对象(就是基类中的对象)在派生类中定义的成员建立之前被建立
class A{
public:
A(){}
virtual void f()
{cout<<"A::f() called"<<endl;
}
};
class B:public A
{
public:
B(){f();}
void g(){f();}
};
class C:public B{
public:
C(){}
void f(){cout<<"C::f() called"<<endl;}
};
void main()
{
C c;//输出A::f() called
c.g();//输出C::f() called
}
//这是因为在建立C类的对象c时,它所包含的基类子对象(就是基类中的对象)在派生类中定义的成员建立之前被建立