转shared_ptr<T>参考

Turning shared_ptr<T> to reference

在存储 shared_ptr<T> 时 return T& 引用的最佳做法是什么?
示例场景: 我存储 std::shared_ptr<Point> lastLocation; 并签名:
Point& getlastPosition();
我想做类似的东西:

Point& MyClass::getLastLocation(){
    return *lastLocation.get()
}

您的代码应该可以正常工作。不过,对 get() 的调用是多余的:共享指针本身可以使用取消引用运算符按原样取消引用,从而产生您想要的引用。所以简单地写

就足够了
Point& MyClass::getLastLocation(){
    return *lastLocation;
}

请记住 Point,除非它的名称没有描述它是什么,否则可能一开始就不需要存储在动态内存中。检查您的代码设计并首先考虑您是否需要任何类型的指针。