在构造函数和析构函数中调用虚函数不存在多态。
看一个例子:
class A{
A(void){bar()};
void foo(){bar()}
virtual void bar(){cout << "A" ;}
}
class B:public A{
void bar(){cout << "B"};
}
int main(void){
B b;
//打印A;因为构造函数中调用虚函数不存在多态
b.foo();
//打印B;//foo()中调用bar()相当于this->bar();
//然后this永远指向调用对象(在这里就是B),但是this指针的类型是本类类型,也就是A.所以this就是
//指向子类对象的基类指针
}