use*_*483 -3 c++ virtual-destructor
当我们有继承时,为什么我们需要一个带有动态变量的虚拟析构函数?在静态/动态情况下析构函数的执行顺序是什么?最底层派生类的析构函数不会总是先执行吗?
当您尝试通过基类指针访问派生类对象时,需要在基类中使用析构函数。virtualdelete
庞特案例:
class Foo
{
public:
virtual ~Foo(){};
};
class Bar : public Foo
{
public:
~Bar() { std::cout << "Bye-Bye, Bar"; }
};
int main()
{
Foo* f = new Bar;
delete f;
}
Run Code Online (Sandbox Code Playgroud)
virtual如果基类中没有析构函数,Bar则这里不会调用 的析构函数。
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |