将shared_ptr <t>转为引用

时间:2018-05-23 16:59:22

标签: c++ smart-pointers

在存储T&时返回shared_ptr<T>引用的好习惯是什么?
示例场景: 我存储std::shared_ptr<Point> lastLocation; 并签名:
Point& getlastPosition();
我想做点什么:

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

1 个答案:

答案 0 :(得分:3)

您的代码应该按原样运行。对get()的调用虽然是多余的:共享指针本身可以使用取消引用运算符解除引用,从而产生所需的引用。所以简单地写

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

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

相关问题