gpt4 book ai didi

c++ - 一个指针可以多次删除c++吗?

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

如果我有下面的例子:

测试.h

class MyClass
{
public:
MyClass();
std::string name1;
std::string name2;
std::string type1;
std::string type2;

void method1(MyClass &obj1);
void method2(MyClass &obj2);
}

测试.cpp

MyClass *mainObject = new MyClass();

MyClass::MyClass()
{
}
void MyClass::method1((MyClass &obj1)
{
//do stuff
mainObject=&obj1; //we populate some of the MyClass variables


}
void MyClass::method2((MyClass &obj2)
{
//do stuff
mainObject=&obj2; //we populate the rest of MyClass variables
}

什么时候应该删除 test.cpp 中的 mainObject?我应该创建一个析构函数以便客户端删除它吗?

最佳答案

这是一个很好的例子,最好不要自己去想它来解决。

使用 shared_ptr<MyClass> mainObject; (新的 C++11 或 Boost 版本)。它会执行 delete给你。

请注意,method1()method2()应该通过 shared_ptr 来接受他们的论点也。目前,他们正在做一件非常糟糕的事情:删除一个通过引用传递的对象。

关于c++ - 一个指针可以多次删除c++吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7162626/

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