【问题标题】:Are these boost shared pointer initializations in PCL different?PCL 中的这些 boost 共享指针初始化是否不同?
【发布时间】: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


【解决方案1】:

感谢@taketwo 我得到了这个答案:

示例 2 和 3 相同。应该首选示例 1,因为它被缩短并且不涉及对复制构造函数的调用。

应该首选示例1,当指针已声明但未初始化时,要走的路是

cloud.reset(new pointCloudType);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2015-10-09
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    相关资源
    最近更新 更多