我有这段代码,我必须用 A 类(构造函数、析构函数、复制构造函数、运算符 =)编写适当的代码,我的问题是如果我希望这段代码能够完美运行,我是否需要编写智能指针,如果不是,您能否解释一下编写智能指针的用处,在此先感谢
A *pa1 = new A(a2);
A const * pa2 = pa1;
A const * const pa3 = pa2;
最佳答案
智能指针在难以预测何时应删除对象时最有用。例如:如果你在一个点上创建了一个对象,这个对象可能在另一个很远的点被删除,或者更重要的是,可能被几个不同的地方删除,智能指针是最好的解决方案。所以基本上,除非您可以确定何时应该删除一个对象,并且这样做总是安全的(即没有其他对象持有指向该对象的指针),否则请使用智能指针。
另一种观点,一些 friend 使用的是,智能指针非常便宜(即使用它们的处理成本非常小),在分配对象时应该总是使用智能指针在堆上(即使用新的)。这样,您就永远不必担心内存泄漏或双重释放等问题。
关于c++ - 关于智能指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3040475/