我今天正在使用PCL并注意到某种数据类型:pcl::PointCloud<T>::Ptr
pcl::PointCloud<T>*
,pcl::PointCloud<T>&
甚至std::shared_ptr<PointCloud<T>>
没有这样做的目的是什么?
如果为deference操作实现了额外的逻辑,那么运算符是否只能被覆盖?
答案 0 :(得分:2)
库经常进行自己的内存管理,可以通过自定义智能指针进行包装,尤其是在C ++ 11标准化智能指针之前发明库时。
通过查看pcl::PointCloud< T > Class Template Reference确认了这一点,其中可以找到以下声明:
typedef boost::shared_ptr< PointCloud< PointT > > Ptr;
当库开发者和他们的用户一直使用PointCloud< PointT >::Ptr
时,它将使他们将来更容易切换到不同的智能指针类(例如std::shared_ptr
)。