在存储T&
时返回shared_ptr<T>
引用的好习惯是什么?
示例场景:
我存储std::shared_ptr<Point> lastLocation;
并签名:
Point& getlastPosition();
我想做点什么:
Point& MyClass::getLastLocation(){
return *lastLocation.get()
}
答案 0 :(得分:3)
您的代码应该按原样运行。对get()
的调用虽然是多余的:共享指针本身可以使用取消引用运算符解除引用,从而产生所需的引用。所以简单地写
Point& MyClass::getLastLocation(){
return *lastLocation;
}
请记住Point
,除非其名称不能描述它的名称,否则可能不需要首先将其存储在动态内存中。检查您的代码设计,并考虑您是否需要任何类型的指针。