我一直在研究运算符重载,每当我使用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();
}
答案 0 :(得分:0)
s2=+s1
仅仅意味着将一元operator+()
应用于operator=()
参数提供的rvalue
。
归结为与
相同的陈述s2 = (+s1);
没有像operator+=()
这样的合并运营商。
除非这些操作符函数针对特定(非原始)类型重载,否则完全没有效果。