【发布时间】:2017-10-16 00:42:21
【问题描述】:
我一直在研究运算符重载,但我无法理解这一点,每当我使用 s1=+s2
答案是s1=1 s2=1,当我使用s2=+s1 时,我得到s1=2 s2=2
请解释
#include<iostream>
using namespace std;
class score
{ private:
int val;
public:
score()
{ val=0; }
score operator+()
{ score temp;
val=val+1;
temp.val=val;
return temp; }
void show()
{ cout<<val<<endl; }
};
main()
{
score s1,s2;
s1.show();
s2.show();
+s1;
s1=+s2;
s1.show();
s2.show();
}
【问题讨论】:
-
和
s1 = +s2;一样的东西 -
哦,我现在看到了...谢谢
-
@sameeralakshitha 这是不正确的,你在想
s1 += s2;这不是一回事。相当于s1 = (+s2);,大多数情况下是s1 = s2;。 -
@sameeralakshitha
s1=+s2;与s1 = s1 + s2;不同。s1=+s2; => s1 = +s2;和s1+=s2 => s1 = s1 + s2; -
离题:那个 + 运算符违反了约定。 + 不应该修改它被调用的对象,就像 3 = 2+1 不修改 2 或 1 的值一样。更多:Operator overloading