读书人

父类虚函数与子类虚函数的调用有关问题

发布时间: 2012-06-07 15:05:14 作者: rapoo

父类虚函数与子类虚函数的调用问题

C/C++ code
class A{    ...    virtual void doit()    {}};class B : public A{    virtual void doit()    {       XXX;  //语句1       YYY;  //语句2       ZZZ;  //语句3    }};void main(){    A *pa = new A();    pa->doit();   // 调用的是父类or子类的doit函数 ?}



  调用的是父类还是子类的虚函数?

pa->doit() 这句会执行B中的doit代码吗?


[解决办法]
再复习一下多态性。
[解决办法]
A中的doit。
需要明白静态类型和动态类型的不同。

C/C++ code
A *pa = new A(); // pa的静态类型是A*,动态类型也是A*A *pa = new B(); // pa的静态类型是A*,动态类型是B*
[解决办法]
http://nanlouchen.blog.163.com/blog/static/2064780902012419104930847/

读书人网 >C++

热点推荐