关于智能指针的问题

时间:2010-06-14 20:02:59

标签: c++

我有这段代码,我必须用类A编写适当的代码(构造函数,析构函数,复制构造函数,运算符=),我的问题是我是否需要编写智能指针,如果我希望这段代码能够完美运行,如果没有,你能解释写智能指针的用处吗,提前谢谢

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

不需要智能指针,因为new之后的操作可以抛出。你只需要:

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

如果这不是您要求的,请澄清您的问题。

相关问题