派生类对象地址赋值给基类指针时必须使用虚析构。
例
A为基类
B为派生类
当A定义指针 p
B定义对象 q
p =&q ;
如果不使用虚析构
在析构时会跳过类B,只析构A
具有一定的风险性
int main()
{
A *b;
B *a;
a = new B;
b = a;
b->asd();
delete b;
return 0;
}
不使用虚析构
使用虚析构
派生类对象地址赋值给基类指针时必须使用虚析构。
例
A为基类
B为派生类
当A定义指针 p
B定义对象 q
p =&q ;
如果不使用虚析构
在析构时会跳过类B,只析构A
具有一定的风险性
int main()
{
A *b;
B *a;
a = new B;
b = a;
b->asd();
delete b;
return 0;
}
不使用虚析构
使用虚析构