gpt4 book ai didi

c++ - 如果我删除一个类,它的成员变量会自动删除吗?

转载 作者:IT老高 更新时间:2023-10-28 12:58:34 25 4
gpt4 key购买 nike

我一直在研究,没有找到相关的东西,所以我来了。

我试图避免内存泄漏,所以我想知道:

假设我有一个类 MyClass 与成员 ints ab,以及一个 int数组c,里面填充了一个成员函数:

class MyClass
{
public:
int a, b;
int c[2];
void setVariables()
{
a, b = 0;
for (int i = 0; i < 2; i++)
{
c[i] = 3;
}
}
};
int main(int argc, char* argv[])
{
MyClass* mc = new MyClass();
mc->setVariables();
delete mc;
}

现在,我调用delete mc后,会ab,以及c的所有内容也被删除?还是我必须在 MyClass 的析构函数中明确地这样做?

最佳答案

规则很简单:用new创建的每个对象都必须用delete销毁一次;使用 new[] 创建的每个数组都必须使用 delete[] 销毁一次;不得删除其他所有内容。所以你的代码是正确的;您在使用 new 创建后删除 mc,而不是删除不是使用 new 创建的成员。

当程序流程变得复杂时(尤其是涉及异常时),应用规则可能会非常棘手;因此,最好不要自己删除对象,而是立即使用 new 的结果来初始化一个智能指针来为您管理对象。

关于c++ - 如果我删除一个类,它的成员变量会自动删除吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6256492/

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