假设构造函数、析构函数和赋值运算符写得正确,为什么我不能像这样实现复制构造函数:
MyClass::MyClass(const MyClass &other)
{
this->value = new Value(*(other.value));
}
我看到的大多数示例都是这样做的:(因为它们通常处理数组)
MyClass::MyClass(const MyClass &other)
{
Value *temp = new Value;
*temp = *(other.value);
this->value = temp;
}
但是在第一个示例中,如果“new”抛出,“other”不受影响,并且如果 Value 的复制构造函数抛出,“new”不会在传播异常之前释放分配的内存吗?
由于这是一个迷你智能指针本身,我特别避免使用 std::unique_ptr 和其他智能指针。