我得到这个操作符重载如何在这里工作在这个代码.....在这种情况下,操作符重载如何工作?
class operatorOver {
public:
int a, b, c;
};
operatorOver operator+(const operatorOver &a, const operatorOver &b) {
operatorOver aa;
aa.a = b.a + a.a;
return aa;
}
int main()
{
operatorOver aaa, bbb, ccc;
aaa.a = 100;
bbb.a = 200;
ccc = aaa + bbb;
cout << ccc.a << endl;
system("pause");
};
但是这个版本我不明白这其中的工作原理这里....
class operatorOver {
public:
operatorOver operator+(const operatorOver &a) {
operatorOver aa;
aa.a = (*this).a + a.a;
return aa;
}
int a, b, c;
};
int main()
{
operatorOver aaa, bbb, ccc;
aaa.a = 100;
bbb.a = 200;
ccc = aaa + bbb;
cout << ccc.a << endl;
system("pause");
};
的我展示的第一个,我假设在这里操作符重载的代码正在考虑到2个对象类以便它工作...
但是,第二个示例如何显示我不需要在其参数中创建另一个对象类,但仍然有效。 ..当你在main()中看时,你会发现有2个对象类仍在传递....我迷路了。
顺便说一句,我更喜欢第一种方式(非成员函数)因为在这种情况下,在'a + b'中,如果a不是operatorOver,并且operatorOver具有从a类型到operatorOver的转换构造函数,它将被调用,而使用成员函数则不会。旁注:除非你有充分的理由不要,否则请以大写字母开始上课。如果大多数C++开发人员使用骆驼案例,这是习惯。所以OperatorOver而不是operatorOver。 –