如何在c ++中正确添加(operator +)两个对象

时间:2016-12-10 15:11:54

标签: c++ oop operators

我试图添加到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

0 个答案:

没有答案