看下面这个例子:
class A
{
protected:
A(){}
~A(){}
public:
virtual void print()
{
cout<<"A::print()!"<<endl;
}
};
class B:public A
{
public:
B(){}
~B(){}
private:
virtual void print()
{
cout<<"B::print()!"<<endl;
}
};
int main()
{
//A obj;//ERROR
B d;
A *pB = &d;
pB->print();
return 0;
}
最后输出"B::print()!",调用的是派生类B中的私有成员函数
print是一个虚函数,pB指向都内容是Derived,所以 pB->print() 调用的是Derivied::print()。
至于private的问题,因为pB是指向Base的指针,调用Base的private函数是可以的(只不过Base::print()那个虚函数指针的内容是 Derivied::print())???这句话没看懂,实在不知道为什么会这样???