使用std :: shared_ptr

时间:2016-04-19 08:25:47

标签: c++ c++11 shared-ptr

我需要一个实现共享数据语义的类,可能std::shared_ptr是一个很好的起点。我认为这种类的典型实现可以使用私有shared_ptr来共享数据,然后至少实现复制构造函数和operator=

类似的东西:

class SharedDataClass {

public:
  SharedDataClass(const SharedDataClass& other)
  {
    data_ = other.data_;
  };

  SharedDataClass& operator=(const SharedDataClass& other)
  {
    data_ = other.data_;
    return *this;
  }

private:
  std::shared_ptr<DataType> data_;
};

我想问一下是否有人批评上述实施。是否有任何其他成员/运营商应该实现一致性?

2 个答案:

答案 0 :(得分:5)

在这种情况下,无需实现复制构造函数或赋值运算符。让编译器为您定义普通的默认值,shared_ptr将完成您期望的工作。

答案 1 :(得分:1)

我看到一个小陷阱。通常,默认构造函数不应默认,因为它将创建一个空data_指针。我认为通常更需要使用默认构造函数来创建一个包含默认构造的data_对象的DataType指针。