我有这段代码,我必须用类A(构造函数,析构函数,复制构造函数,运算符=)编写适当的代码,我的问题是我需要编写智能指针,如果我希望这个代码将很好地工作,如果没有,你能提前说明,其中写的智能指针将是有益的,感谢关于智能指针的问题
A *pa1 = new A(a2);
A const * pa2 = pa1;
A const * const pa3 = pa2;
我有这段代码,我必须用类A(构造函数,析构函数,复制构造函数,运算符=)编写适当的代码,我的问题是我需要编写智能指针,如果我希望这个代码将很好地工作,如果没有,你能提前说明,其中写的智能指针将是有益的,感谢关于智能指针的问题
A *pa1 = new A(a2);
A const * pa2 = pa1;
A const * const pa3 = pa2;
不需要智能指针,因为非新操作之后的操作可能会丢失。你只需要:
A *pa1 = new A(a2);
A const * pa2 = pa1;
A const * const pa3 = pa2;
delete pa1;
如果这不是你所问的,请澄清你的问题。
智能指针是最有用的,当它是很难预测何时对象应该被删除。例如:如果您在一个点创建一个对象,并且该对象可能在另一个非常远的点删除,或者更重要的是,可能会被几个不同的地方删除,智能指针是最好的解决方案。所以基本上,除非你可以肯定地说当一个对象应该被删除,并且这样做总是安全的(即没有其他对象持有指向该对象的指针)使用智能指针。
的看法,其中一些朋友使用的另一点,是智能指针是如此便宜(即使用它们的处理成本是非常小的),应总是使用智能指针当对象在堆中分配(即使用新的)。这样,您就不必担心内存泄漏或双释放等问题。
当你说“编写智能指针”时,你的意思是“*使用智能指针吗?”你并不是真的想要实现你自己的智能指针类,是吗? – 2010-06-14 20:50:19