父类虚函数与子类虚函数的调用问题
- 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/