在方法内部可以从类中创建一个未初始化的对象吗?
这是一些上下文:想象一个构造函数都分配内存的类:
class NumberArray
{
size_t m_Size;
int *m_Numbers;
public:
NumberArray() { m_Size = 1; m_Numbers = new int[1]; m_Numbers[0] = 0; }
// . . . other methods for manipulating or constructing . . .
~NumberArray() { delete[] m_Numbers; }
// What if I had a method that concatenates two arrays?
NumberArray ConcatenateWith(const NumberArray &) const;
};
在这样的方法中,人们希望创建一个未初始化的 class 对象NumberArray
,然后基于this
参数中的对象“构造”一个新对象?又名:
NumberArray NumberArray::ConcatenateWith(const NumberArray &other) const
{
// Mystery manner of creating an uninitialised NumberArray 'returnObject'.
returnObject.m_Size = m_Size + other.m_Size;
returnObject.m_Numbers = new int[returnObject.m_Size];
std::copy(m_Numbers, m_Numbers + m_Size, returnObject.m_Numbers);
std::copy(other.m_Numbers, other.m_Numbers + other.m_Size, returnObject.m_Numbers + m_Size);
return returnObject;
}
这样做的最佳方法是什么?基本上,我不希望默认构造函数创建一个大小为 1 的数组,我将删除该数组,然后再分配一个新数组。