我们先来看一看自增运算符重载的例子:
#include<iostream>
using namespace std;
class Test
{
private:
int m_a;
public:
Test()
{
m_a = 0;
}
//运算符重载返回对象的类型
Test& operator++()
{
++m_a;
return *this;//意思就是返回对象本身
}
//等于号的重载:
Test operator=(const int a)
{
m_a = a;
return *this;
}
//打印函数
void print()
{
cout << m_a << "\t";
}
};
int main()
{
Test t;
t.print();
(++t).print();
(++t).print();
(++t).print();//输出0 1 2 3 4
return 0;
}
如果我们自增运算符Test之前不加&引用我们发现我们可以正常输出同样的结果。但是如果我们把主函数里的代码改成这样:
int main()
{
Test t;
t.print();
(++t).print();
++t = 360;
(++t).print();
(++t).print();
//输出结果:0 1 2 3 4
return 0;
}
我们发现它输出的结果依然是0 1 3 4
我们再把&加上去就会发现输出结果为:0 1 361 362
引用就是为了可以在外面改变他的值(使它从左值变为右值)左值可以修改因为他是变量,右值不可以修改