2010-06-14 95 views
1

我有这段代码,我必须用类A(构造函数,析构函数,复制构造函数,运算符=)编写适当的代码,我的问题是我需要编写智能指针,如果我希望这个代码将很好地工作,如果没有,你能提前说明,其中写的智能指针将是有益的,感谢关于智能指针的问题

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

当你说“编写智能指针”时,你的意思是“*使用智能指针吗?”你并不是真的想要实现你自己的智能指针类,是吗? – 2010-06-14 20:50:19

回答

1

不需要智能指针,因为非新操作之后的操作可能会丢失。你只需要:

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

如果这不是你所问的,请澄清你的问题。

2

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

的看法,其中一些朋友使用的另一点,是智能指针是如此便宜(即使用它们的处理成本是非常小的),应总是使用智能指针当对象在堆中分配(即使用新的)。这样,您就不必担心内存泄漏或双释放等问题。