我做了一個在C Vector類++,我的問題是,如果我做<<運營商不計算表達式正確
Vector v = v1 + v2;
cout << v
結果是正確的,然而做 cout << v1 + v2
給
[-1.07374e+008 -1.07374e+008 -1.07374e+008]
代替的[1, 2, 4]
同樣適用於其他運營商,我實現, 這裏是我的+符實現
Vector& Vector::operator+= (const Vector& other) {
x += other.x;
y += other.y;
z += other.z;
return *this;
}
Vector& operator+ (const Vector& v1, const Vector& v2) {
Vector v = v1;
v += v2;
return v;
}
和< <操作
ostream& operator<< (ostream& o, const Vector& v) {
o << "[" << v.x << " " << v.y << " " << v.z << "]; ";
return o;
}
我沒有MENAGE發現一個錯誤,我在這裏似乎是正確的。任何人都可以知道爲什麼發生這種情況
在'operator +'中,您將返回一個具有自動持續時間的本地變量的引用。這是未定義的行爲。你應該用價值來回報它。 – 2014-11-08 12:04:55