【发布时间】:2012-07-12 11:00:29
【问题描述】:
我想知道是否可以通过析构方法删除对象?
我的类的构造函数和析构函数:
class cal
{
public:
cal()
{
days = 0;
day = 1;
month = 1;
year = 1300;
leap = true;
};
~cal()
{
delete this;
}
}*calendar = new cal;
如何通过类删除这个指针?
附言
我忘了写下面的代码
cal *calandar = new cal[];
我想在堆而不是堆栈中使用它
我想经常使用这个类(对象)(很多那个对象)想象我应该写多少次 delete 并且它很难理解,故障排除和跟踪代码我希望它们被自动销毁(在堆中)
当我执行“delete[] calendar”时,我在课堂上使用了以下代码,它减少了我占用的内存(使用的内存量)它是否通过退出程序正常工作(销毁所有对象)?因为我使用 GNU/Linus,它会破坏所有带有或不带有该行的对象,我担心会在 windows 中泄漏
void DisposeObject() { delete this; }
【问题讨论】:
-
为什么需要?为什么不让调用代码删除你的对象?
-
如果您想为用户省去麻烦,请不要打扰!如果他们对此感兴趣,他们应该使用智能指针。
-
也许可以,但使用它们不是强制。并且有些人会使用
delete这个词 -
@chris 删除
this没有错;这是一个常见的成语。但是你不想在析构函数中这样做。 -
@JamesKanze,除了
Release()方法之外,它还用于其他任何地方吗?我从来没有见过它以其他方式使用。
标签: c++ class destructor