所以我和一个朋友在争论,解决这个问题还有什么比Stack Overflow更好的途径呢?
举个简单的例子。假设其他所有函数都已经实现正确。这个复制构造函数会泄漏内存吗?
我的观点是它绝对不会。它为新对象分配了 [rhs._size]
的内存,在对象超出范围时通过析构函数释放,而为 rhs
分配的内存在其自己的析构函数中被释放。
template<typename T>
class dynarray
{
private:
T* _data;
std::size_t _size;
public:
dynarray(const dynarray& rhs)
: _data(new T[rhs._size]), _size(rhs._size)
{
std::copy(rhs._data, rhs._data + rhs._size, _data);
}
~dynarray() { delete[] _data; }
};