VecXd &operator+=(VecXd<T> &addend){
if(dimension != addend.dimension)
cout << "The vector dimensions are not equal";
else{
for(int i=0; i< dimension; i++)
vector[i] = vector[i] + addend.vector[i];
}
return *this;
}
friend VecXd &operator+(VecXd<T> &vec, VecXd<T> &addend){
return vec+=addend;
}
当做a + b时,第一个'a'也会改变总和。我想通过使用引用,我不会影响原始向量。如果没有它也改变'a'我该怎么做?
答案 0 :(得分:0)
只需按值而不是按引用将vec
传递给operator+
。或者,通过const
引用传递它并制作副本。另外,不要从operator+
返回引用 - 没有对象可以返回引用。
friend VecXd operator+(const VecXd<T> &vec, const VecXd<T> &addend){
VecXd<T> copy(vec);
return copy+=addend;
}
添加产生的对象必须是临时的,因为没有永久的位置。因此,您无法通过引用将其返回。