c++ - 关于智能指针的问题

标签 c++

我有这段代码,我必须用 A 类(构造函数、析构函数、复制构造函数、运算符 =)编写适当的代码,我的问题是如果我希望这段代码能够完美运行,我是否需要编写智能指针,如果不是,您能否解释一下编写智能指针的用处,在此先感谢

A *pa1 = new A(a2);
A const * pa2 = pa1;
A const * const pa3 = pa2;

最佳答案

智能指针在难以预测何时应删除对象时最有用。例如:如果你在一个点上创建了一个对象,这个对象可能在另一个很远的点被删除,或者更重要的是,可能被几个不同的地方删除,智能指针是最好的解决方案。所以基本上,除非您可以确定何时应该删除一个对象,并且这样做总是安全的(即没有其他对象持有指向该对象的指针),否则请使用智能指针。

另一种观点,一些 friend 使用的是,智能指针非常便宜(即使用它们的处理成本非常小),在分配对象时应该总是使用智能指针在堆上(即使用新的)。这样,您就永远不必担心内存泄漏或双重释放等问题。

关于c++ - 关于智能指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3040475/

相关文章:

c++ - 使用快捷方式创建 QAction,无需插入菜单

c++ - 有没有办法从 ELF 中提取符号,并使用 LD 将另一个文件与先前 ELF 中定义的符号链接(symbolic link)在一起?

c++ - 继续C Syntax Analyzer相关项目的困惑

c++ - 嵌入 luajit undefined reference

c++ - 在C++中很难使用北欧字符处理字符串

c++ - 为什么 std::shared_ptr 没有 [] 运算符?

c++ - Qt/C++ - 转换原始二进制数据并将其显示为图像(即 QImage)

c++ - 通过非常量引用将使用自动关键字声明的 lambda 作为参数传递给 std::function 参数类型

c++ - C++ 标准库上的 sizeof()

c++ - 从游戏中的可移动空间中删除矩形