gpt4 book ai didi

C++删除一个对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:01 24 4
gpt4 key购买 nike

我没有在 C++ 程序中处理内存的经验,所以在这种情况下我想得到一些建议:

我想在一个类的函数中创建一个 new Object,这在程序结束之前都是必不可少的。就我而言,如果我使用运算符 new,我有时应该删除它。考虑到它必须在类内部初始化,我必须何时以及如何最终删除它?

最佳答案

我建议使用智能指针习语

#include <memory>

struct X
{
void foo() { }
};

std::share_ptr<X> makeX() // could also be a class member of course
{
return std::make_shared<X>();
}

int main()
{
std::share_ptr<X> stayaround = makeX();

// can just be used like an ordinary pointer:

stayaround->foo();

// auto-deletes <sup>1</sup>
}

如果指针确实是一个静态变量,您可以替换为 unique_ptr(其工作方式类似,但在赋值时传递所有权;这意味着指针不必保留 引用计数)

注意要了解有关 C++ 智能指针的更多信息,请参阅 smart pointers (boost) explained

注意如果您没有对此的 TR1/C++0x 支持,您可以只使用 Boost Smartpointer


<子>1 除非您泄漏 shared_ptr 本身的拷贝;这将是以前看不到的智能指针的一些奇怪用法:)

关于C++删除一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8310716/

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