gpt4 book ai didi

c++ - 删除这个?它有什么作用?

转载 作者:太空狗 更新时间:2023-10-29 23:31:14 24 4
gpt4 key购买 nike

鉴于以下情况:

#include <iostream>
using namespace std;

class A
{
public:
void func() {delete this;}
A() : x(5) {cout << "ctor A" << endl;}
~A() {cout << "dtor A" << endl;}
int x;
};

int main() {
A a;
cout << "The X value: " << a.x << endl;
a.func(); // calling 'delete this' ->going to the dtor #1
cout << "The X value: " << a.x << endl;
return 0;
}

输出是:

ctor A
The X value: 5
dtor A
The X value: 5
dtor A

删除这个; 是否有任何严重的影响?

最佳答案

在这种情况下(您没有通过 new 分配 A 对象)您正在调用未定义的行为。未定义的行为通常是一件非常非常糟糕的事情。基本上,任何事情都有可能发生。

可以在“删除这个”的地方编写代码;不过会没事的。但我不记得曾经这样做过。尽量避免它。通过将此职责委派给其他对象(例如,智能指针),尝试完全避免手动调用 delete(无论您是否使用 new)。

关于c++ - 删除这个?它有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7220289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com