我需要一个实现共享数据语义的类,可能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_;
};
我想问一下是否有人批评上述实施。是否有任何其他成员/运营商应该实现一致性?
答案 0 :(得分:5)
在这种情况下,无需实现复制构造函数或赋值运算符。让编译器为您定义普通的默认值,shared_ptr将完成您期望的工作。
答案 1 :(得分:1)
我看到一个小陷阱。通常,默认构造函数不应默认,因为它将创建一个空data_
指针。我认为通常更需要使用默认构造函数来创建一个包含默认构造的data_
对象的DataType
指针。