gpt4 book ai didi

c++ - 删除主新变量中的新变量

转载 作者:太空宇宙 更新时间:2023-11-04 16:29:04 25 4
gpt4 key购买 nike

对不起标题。我不确定该给它起什么名字。如果有任何 mod 正在阅读并且他们理解问题,那么请在需要时重命名。

假设您创建了一个 new 变量 (varOne)。

在 varOne 代码中,其他变量被创建为 new (varTwo, varThree)。

如果你在varOne上调用delete,varTwo和varThree会被删除,还是你需要删除它们并删除varOne?

最佳答案

您只需要删除 varTwo 和 varThree,因为当您退出 varOne 的析构函数时,您用来调用 varOne 的析构函数的删除将清除 varOne 的那个实例。

换句话说,在下面的示例中,varOne 是 Foo,varTwo 是 m_i,varThre 是 m_c:

class Foo
{
public:
Foo() : m_i( new int ), m_c( new char ) { }
~Foo() { delete m_i; delete m_c; }
// don't forget to take care of copy constructor and assignment operator here!!!
private:
int* m_i;
char* m_char;
};

main()
{
Foo* p = new Foo;
delete p;
}

同时确保在执行此操作时遵循 The Rule of Three否则你的程序会遇到内存问题。 (换句话说,如果您在构造函数中进行内存分配,请确保覆盖或删除默认的复制构造函数和赋值运算符)。

关于c++ - 删除主新变量中的新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9047250/

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