转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
,除非它的名称没有描述它是什么,否则可能一开始就不需要存储在动态内存中。检查您的代码设计并首先考虑您是否需要任何类型的指针。
在存储 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
,除非它的名称没有描述它是什么,否则可能一开始就不需要存储在动态内存中。检查您的代码设计并首先考虑您是否需要任何类型的指针。