您的位置:首页 > 编程语言 > C语言/C++

C/C++中为什么在类外利用多态基类指向派生类指针可以调用类的私有成员函数?

2013-09-28 11:42 761 查看
看下面这个例子:

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())???这句话没看懂,实在不知道为什么会这样???
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 虚函数
相关文章推荐