为什么有些库定义自己的指针类型?

时间:2018-02-15 06:25:23

标签: c++ pointers

我今天正在使用PCL并注意到某种数据类型:pcl::PointCloud<T>::Ptr

pcl::PointCloud<T>*pcl::PointCloud<T>&甚至std::shared_ptr<PointCloud<T>>没有这样做的目的是什么?

如果为deference操作实现了额外的逻辑,那么运算符是否只能被覆盖?

1 个答案:

答案 0 :(得分:2)

库经常进行自己的内存管理,可以通过自定义智能指针进行包装,尤其是在C ++ 11标准化智能指针之前发明库时。

通过查看pcl::PointCloud< T > Class Template Reference确认了这一点,其中可以找到以下声明:

typedef boost::shared_ptr< PointCloud< PointT > > Ptr;

当库开发者和他们的用户一直使用PointCloud< PointT >::Ptr时,它将使他们将来更容易切换到不同的智能指针类(例如std::shared_ptr)。