virtual的向后传递
如果成员函数foo被声明为virtual,则所有派生类的foo(foo的声明完全相同)都是virtual
反之不然,派生类声明为virtual,不影响基类
void printOut(const char * str)
{
cout < < str << endl;
}class ClassBase
{
public:
virtual void foo() { printOut("foo in Base Class"); }
};class ClassDerived : public ClassBase
{
public:
void foo() { printOut("foo in Derived Class"); }
};void main()
{
ClassBase p = new ClassDerived;
p->foo();
delete p;
}
将打印”foo in Derived Class”
class ClassBase
{
public:
void foo() { printOut(”foo in Base Class”); }
};class ClassDerived : public ClassBase
{
public:
virtual void foo() { printOut(”foo in Derived Class”); }
};void main()
{
ClassBase p = new ClassDerived;
p->foo();
delete p;
}
将打印”foo in Base Class”