使用 std::shared_ptr 共享数据 class

Shared data class using std::shared_ptr

我需要一个实现共享数据语义的 class,std::shared_ptr 可能是一个不错的起点。我认为这种 class 的典型实现可以对共享数据使用私有 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_;
};

请问有没有人对上述实现提出批评。是否还有其他 member/operator 应该实施以保持一致性?

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

我看到一个小陷阱。通常不应默认默认构造函数,因为它会创建一个空 data_ 指针。我认为一般来说,更可取的是让默认构造函数创建一个 data_ 指针,其中包含一个默认构造的 DataType 对象。