在c ++中= +是什么意思

时间:2017-05-16 19:17:50

标签: c++ operator-overloading

我一直在研究运算符重载,每当我使用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();
}

1 个答案:

答案 0 :(得分:0)

 s2=+s1

仅仅意味着将一元operator+()应用于operator=()参数提供的rvalue

归结为与

相同的陈述
s2 = (+s1);

没有像operator+=()这样的合并运营商。

除非这些操作符函数针对特定(非原始)类型重载,否则完全没有效果。