我应该总是在C++ 11中使用智能指针

Eri*_*pir 1 c++ shared-ptr c++11

从c ++ 11开始,我可以在不创建和删除原始指针的情况下编写代码.但这是正确的方法 - 我应该总是使用智能指针(共享,独特或弱)或者是否有我应该自己删除对象的情况?

jal*_*alf 18

很难想象你想要手动删除一个对象的情况,所以在这个意义上,你的问题的答案是"是的,总是使用智能指针".

但是,原始指针确实有另一个用例.智能指针都是关于授予所有权语义.A unique_ptr具有它指向的对象的独占所有权,并且当指针超出范围时将销毁该对象.一个shared_ptr工具共享所有权,并在最后一个共享指针超出范围的对象将被销毁.

对于想要指向对象而不指示任何所有权类型的情况,原始指针仍然有用.你只是指向一个你知道存在的对象,而其他人(谁拥有它)会在时机成熟时删除它.

原始指针用于指向对象.智能指针用于拥有对象.

  • @JamesKanze:我还没有看到很多包含`删除这个'的"写得好"的代码.而且我很确定我们不同意C++代码编写得很好.除此之外,我不确定如何回答你.我不确定你对对象生命周期的"显式控制"是什么意思.如果我使用`unique_ptr`或`shared_ptr`,我是否有明确的控制权?我确切地控制它应该被删除的时间,但我没有明确地将代码放在我想要删除它的网站上.我通常*做*想要控制对象的生命周期.这就是我使用智能指针的原因. (2认同)