【发布时间】:2019-08-12 06:27:30
【问题描述】:
我已经使用 PCL 一段时间了,并且看到了几种初始化 boost::shared_ptr 的方法。以下是我正在考虑的示例:
pointCloudType::Ptr cloud (new pointCloudType);pointCloudType::Ptr cloud = pointCloudType::Ptr(new pointCloudType);pointCloudType::Ptr cloud = pointCloudType::Ptr(new pointCloudType());
它们之间有什么区别和/或使用其中一种优于其他的吗?
【问题讨论】:
-
示例 2 和 3 相同。应该首选示例 1,因为它被缩短并且不涉及对复制构造函数的调用。
-
@taketwo 谢谢,所以我猜示例 1 比其他示例更有效。当一个指针被声明但没有被初始化怎么办?你还能应用方法1吗?即
pointCloudType::Ptr cloud;然后做cloud(new pointCloudType);? -
在这种情况下你应该使用
cloud.reset(new pointCloudType); -
感谢您的帮助!
标签: c++ boost shared-ptr point-cloud-library