相关疑难解决方法(0)

"删除这个"有什么用?

今天,我看到了一些遗留代码.在析构函数中有一个类似" delete this" 的语句.我想,这个调用将是递归的.它为什么有效?

我在Y!上做了一些快速搜索,我发现如果需要限制用户创建堆栈对象,我们可以将析构函数设为私有,并提供删除实例的接口.在提供的接口中,我们必须在此指针上调用delete.

是否还有其他使用此类陈述的情况?

c++ destructor memory-management self-destruction

28
推荐指数
2
解决办法
5400
查看次数

是否可以使用"删除此项"删除当前对象?

我正在编写一个链表,我想要一个struct的析构函数(一个Node结构)来简单地删除它自己,并且没有任何副作用.我希望我的列表的析构函数迭代地自己调用Node析构函数(临时存储下一个节点),如下所示:

//my list class has first and last pointers
//and my nodes each have a pointer to the previous and next
//node
DoublyLinkedList::~DoublyLinkedList
{
    Node *temp = first();

    while (temp->next() != NULL)
    {
        delete temp;
        temp = temp->next();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以这将是我的Node析构函数:

Node::~Node
{
   delete this;
}
Run Code Online (Sandbox Code Playgroud)

这是否可以接受,特别是在这种情况下?

c++ destructor linked-list this self-destruction

7
推荐指数
1
解决办法
2237
查看次数