struct A
{
virtual ~A() { this->f(); }
virtual void f() {};
};
struct B : A
{
int* p;
B() : p(new int) {}
~B()
{
delete p;
p = 0;
}
void f() override { *p = 0; }
};
int main()
{
delete new B; // Is it safe?
}
在虛擬析構函數中調用其他虛擬方法是否安全?在虛擬析構函數中調用其他虛擬方法是否安全?
如果爲純虛擬提供了一個主體,那麼它並不是未定義的。 –
我問了一個問題,以確保.. http://stackoverflow.com/questions/18456450/is-it-safe-to-call-a-pure-virtual-function-in-an-abstract-constructor-destructor –