我試圖用+來添加2矢量(數學矢量)。這裏是我的代碼:運算符超載作爲朋友函數錯誤
class Vector{
double v[Max_size];
int dim;
public:
int getDim() const;
Vector();
Vector(int n);
Vector(const Vector& a);
Vector add(const Vector&b);
friend Vector operator+(Vector summand1, Vector summand2);
};
運算符重載:
Vector operator+(Vector summand1, Vector summand2){
int dim1 = summand1.getDim();
int dim2 = summand2.getDim();
assert(dim1 == dim2);
Vector sum(dim1);
int i;
for(i = 0; i < dim1; i++){
sum.v[i] = summand1.v[i] + summand2.v[i];
}
return sum;
}
我如何使用它:
Vector m = v+t;
當我運行的代碼,它總是顯示m是(0,0 )(2D向量),這是構造函數生成的默認值。它出什麼問題了?謝謝!
您的問題不在於發佈的代碼中,您能否發佈更多詳細信息以便我們運行代碼? – WhiZTiM
我一定想看看複製構造函數。 –
順便說一句...爲了提高效率,我建議你閱讀下面的內容:http://stackoverflow.com/a/414260/1621391 – WhiZTiM