首先,由于有不同种类的智能指针,我想把这个问题集中在其中两个上:引用计数的侵入式和非侵入式智能指针。针对每种指针类型单独询问该问题。
我不太确定如何提出我的问题,所以这就是我不问的:我不问为什么或何时需要智能指针。我应该使用哪种类型的智能指针以及用于什么。
这就是我要问的,我希望它足够清楚:在处理“智能管理”对象时,我应该在哪些上下文中使用哪种指针语义?也就是说,智能指针语义、原始指针语义、其他东西(例如对智能指针的引用)?
很明显,当我“存储”指向对象(对象是引用计数的内存实体)的指针(例如全局指针或作为类成员)时,它应该是智能指针,因此它会声明所有权,但是其他情况呢?
当我将指针作为函数参数传递时,它应该是智能指针、原始指针、对智能指针的引用还是其他什么?返回的指针呢?本地指针?很快...
当然,我可以在任何地方使用智能指针,这是最安全的选择,但我觉得这确实没有必要,而且会增加开销。