智能指针.何时,何地以及如何?

3 c++ smart-pointers

首先,由于存在不同类型的智能指针,我想将这个问题集中在其中两个上:引用计入侵入式和非侵入式智能指针.针对每种指针类型单独询问该问题.

我不确定如何制定我的问题,所以这就是我不问的问题:我不是在问为什么或什么时候需要智能指针.我不应该使用哪种类型的智能指针.

这就是我所要求的,我希望它足够清楚:当处理"智能管理"对象时,我应该在哪些上下文中使用哪个指针语义?也就是说,智能指针语义,原始指针语义,别的东西(比如对智能指针的引用)?

显而易见的是,当我"存储"指向对象的指针(对象是引用计数的内存实体)时,例如全局指针,或者作为类成员,它应该是一个智能指针,因此它会声称所有权,但是其他情况怎么样?

当我将指针作为函数参数传递时,它应该是智能指针,原始指针,对智能指针的引用,还是其他什么?返回指针怎么样?本地指针?等......

当然,我可以在任何地方使用智能指针,这是最安全的选择,但我觉得这实际上是不必要的并增加了开销.

Sam*_*ijo 5

恕我直言,有时候做事更快,而不是稍微提高绩效.如果你总是使用智能指针,我想你会更快地做事.

我的建议:到处使用智能指针.然后使用分析器查看它是否会产生相当大的开销.它在哪里,改变它:)