关于基类的虚析构函数
比如说下面的代码:
class A{
public:
virtual ~A(){ cout << "A::destructor" << endl;}
};
class B : public A{
public:
~B(){ cout << "B::destructor" << endl;}
};
B类并没有重写~A()函数,但是A* p = new B();delete p;会先调用~B(),然后调用~A(),如果按照虚函数的语义,delete p时,编译器不应该去找B类中是否重写了~A()函数么。那在处理虚析构函数时,岂不是与普通虚函数不一致?