Slo*_*out 0 c++ memory destructor
我不确定我的问题是多么相关,但在这里.
我知道我们应该只在堆上分配内存时显式调用析构函数.
所以我们假设我们有两个类:Animal和Dog,它是Animal的一个子类.
Animal a* = new Dog();
//-------Do something here-----//
a -> ~Animal();
Run Code Online (Sandbox Code Playgroud)
再次,让我们说动物包含几个动态分配的字段,并且Dog类添加了几个动态分配的字段.
因为Dog有更多的字段,所以调用Animal析构函数会导致内存泄漏.这只是糟糕的编程风格还是我们可以得到一个解决方法?
我想我们需要将指针转换为Dog类型,然后调用析构函数,但我无法找到有关如何正确执行此操作的任何参考.
因为Dog有更多的字段,所以调用Animal析构函数会导致内存泄漏.
如果Animal析构函数是,那就不会发生virtual.
此外,您无需致电~Animal().一个例外是如果您正在编写自己的分配器.通常你会打电话delete a.
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |