我试图添加到Vector1类的对象 Vector1有:
int dim; // the dimension
int *x; // the values of all dimensions.
构造时,用户可以设置昏暗和所有值。
现在我尝试在main中执行此操作:
cout<< (vector1 + vector2)[i]; //打印总和的x [i]。
要做到这一点我重载了+和[]运算符,但我不确定如何正确地执行+
///////////// 起初我以为我会这样做:
Vector1 &Vector1::operator+(const Vector1 &v2) {
if (dim == v2.dim)
{
for (int i=0 ; i<dim ; i++)
x[i] = x[i] + v2.x[i];
}
else {
cout << "Error! Vectors from different dimensions";
exir(1);
}
return *this;
}
然后我意识到我以这种方式覆盖了Vector1,我希望能够在不覆盖任何数据的情况下获得解决方案,所以我想到了这个:
Vector1 &Vector1::operator+(const Vector1 &v2) {
Vector1 temp;
if (dim == v2.dim)
{
temp.dim = dim;
int *arr = new int[dim];
for (int i=0 ; i<dim ; i++)
arr[i] = x[i] + v2.x[i];
}
else
{
cout << "Error! Vectors from different dimensions";
exit(1);
}
return temp;
}
现在我不确定我返回的“临时”矢量是否会在“cout&lt;&lt; ...”行之后被删除,或者即使我不再使用它也会留在内存中...
有人可以向我解释如何正确地做到这一点吗?
Thnx