如何通过析构函数方法删除对象(类)
How to delete an object (class) through destructor method
我想知道是否可以通过析构函数方法删除对象?
我的类的构造函数和析构函数:
class cal
{
public:
cal()
{
days = 0;
day = 1;
month = 1;
year = 1300;
leap = true;
};
~cal()
{
delete this;
}
}*calendar = new cal;
如何通过类删除此指针?
p.S
我忘了写以下代码
cal *calandar = new cal[];
我想在堆中使用它,而不是堆叠
我想经常使用这个类(对象)(很多对象)想象一下我应该写多少次删除,这会让我很难理解、排除故障和跟踪代码。我希望它们自动销毁(堆中)
当我执行"delete[]calendar"时,我在类中使用了以下代码,它减少了我的内存占用(使用的内存量)。它是否通过退出程序正常工作(销毁所有对象)?因为我使用GNU/Linus,它会破坏所有有或没有这行的对象,我担心在windows 中泄漏
void DisposeObject() { delete this; }
否。在调用析构函数时,对象已经被销毁,因此delete this
无效。
行为是未定义的,但很可能会递归调用析构函数,导致堆栈溢出。
您可以这样编写代码:
class cal
{
public:
cal()
{
};
~cal()
{
}
void DisposeObject()
{
delete this;
}
}
它会调用你的析构函数。
您不应该从析构函数中调用delete this
,因为它会递归地调用析构函数,可能会导致堆栈溢出。无论如何,您编写的代码都存在未定义的行为。
请参阅此问题进行深入讨论:是否允许删除此项?
我想知道是否可以通过析构函数方法删除对象
即使假设这是有效的-问题是,没有什么会调用析构函数,所以这永远不会有效果。当调用代码删除对象时,会调用析构函数,而对象又可以根据需要删除任何内部对象。
然而,在您的情况下,您似乎不需要在析构函数中做任何事情,因为您没有任何需要明确删除的资源(至少在您显示的内容中)。
相关文章:
- 线程调用的函数对对象删除是否安全?
- 当我使用dynamic_cast并删除对象删除时,析构函数是如何工作的?
- 使用 com 对象删除计划任务
- C 将对象删除为参考
- C样式对象删除的包装器
- 静态映射中动态分配的对象.删除必要的
- C++指向对象删除的指针数组,"Debug assertion failure!"
- 在其成员函数返回之前,将对象删除是不确定的行为吗?
- Python 对象删除检测
- C++安全对象删除
- Qt:RemoveWidget和对象删除
- Qt对象删除导致崩溃
- 删除由两个shared_pointer实例管理的对象(删除其中一个)
- 顶点缓冲区对象(删除进程)opengl
- 设计 -- 按名称或对象删除
- 提升中的异常:进程间,共享内存对象删除
- 使用std::function和std::bind来存储回调并处理对象删除
- 如何使用智能指针防止双重对象删除
- 指针指向对象删除时自动为空
- 对象层次结构中的对象删除责任