我想了解重载操作符,我一直盯着这个比我想承认的时间更长。我相信,除了运营商+成员之外,我理解课上的所有内容。我试图用大量的可用信息来教自己,但我找不到任何信息向我解释我在这里看到的情况 - 而且我坚信如果我明白事情如何,那么我可以使用它更好。如何在未定义的情况下返回值?
所以,大多数情况下,我的困惑在于编译器如何知道要选择哪个温度变量。 (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