请有人解释为什么在下面的例子中(在while循环中)必须清空当前的向量?如果当前向量已经为空,会发生什么?您是否还举例说明了如何使用重载运算符?这是一种coplien形式。
感谢您清理这些事情。
Type& Type::operator =(const Type& p_vector2)
{
if (this != &p_vector2)
{
int i = 0;
int j = vector1.size();
while (i < j)
{
delete vector1[0];
this->vector1.erase(vector1.begin());
i++;
}
for (unsigned int i=0; i < p_vector2.vector1.size(); i++)
{
this->vector1.push_back(vector2.vector1[i][0].clone());
}
}
return *this;
}
答案 0 :(得分:3)
请有人解释为什么在下面的例子中(在while循环中)必须清空当前的向量?
因为无论出于何种原因,作者决定存储指向动态分配内存的指针。现在,他(你)有责任解除这些对象,因为向量无法做到。这可能是一个坏主意,但谁知道,也许有充分的理由。
我无法解释为什么他不只是解除分配,然后在循环后调用clear
。
如果当前矢量已经为空,会发生什么?
然后循环将永远不会执行,因为i
和j
将是0
,而0
不会小于0
。
您是否也举例说明了如何使用重载运算符?
Type t1;
Type t2;
t2 = t1;