我想了解重載操作符,我一直盯着這個比我想承認的時間更長。我相信,除了運營商+成員之外,我理解課上的所有內容。我試圖用大量的可用信息來教自己,但我找不到任何信息向我解釋我在這裏看到的情況 - 而且我堅信如果我明白事情如何,那麼我可以使用它更好。如何在未定義的情況下返回值?
所以,大多數情況下,我的困惑在於編譯器如何知道要選擇哪個溫度變量。 (temp.x或temp.y)我意識到main()是要求c.x和c.y,但是operator +似乎正在返回尚未定義的東西。沒有三元運算符或任何可以使其選擇返回的東西。
#include <iostream>
using namespace std;
class CVector {
public:
int x,y;
CVector() {};
CVector (int,int);
CVector operator + (CVector);
};
CVector::CVector (int a, int b) {
x = a;
y = b;
}
CVector CVector::operator+ (CVector param) {
CVector temp;
temp.x = x + param.x;
temp.y = y + param.y;
return (temp);
}
int main() {
CVector a (3,1);
CVector b (1,2);
CVector c;
c = a + b;
cout << c.x << "," << c.y;
return 0;
}
它沒有返回'temp.x'或'temp.y',它返回'temp'。 –
對,我明白這一點。我會換個話。它如何返回溫度?在我看來,溫度還沒有值得回報。我預計我會看到類似於: return(temp = x?temp.x:temp。Y); – Scott
您認爲它沒有價值嗎? – drescherjm