#include <iostream>
using namespace std;
class a
{
public:
//返回值是一个引用
a & operator-()//一元运算符
{
x = -x;
return *this;//注意返回的是对象不是指针
}
a & operator++()//一元运算符,前置++
{
x++;
return *this;
}
a operator++(int)//后置++重载,返回是一个对象,int是一个标识,标识后置重载,不传参数
{
a old = *this;
x++;
return old;
}
a operator+(const a & num)
{
a cnt;
cnt.x = this->x + num.x;
return cnt;
}
//输入输出运算符不能重载为类的成员函数,可以重载为类的友元函数和普通函数
//因为成员函数第一个变量是this指针,而输出重载第一个是ostream
friend ostream & operator<<(ostream & out,a & num)//输出运算符重载
{
out<<"("<<num.x<<")";
return out;
}
/*
int a operator[](int in)
{
if(in == 0)
return x;
return 0;
}
*/
int x;
};
int main()
{
a num;
num.x = 10;
num++;//等价于num.operator(0);
++num;//num.operator++();
-num;//等价于num.operator-();
cout<<num.x<<endl;
a num1,num2;
num1.x = 10;
num2.x = 20;
num1 = num1+num2;//num1 = num1.operator+(num2)//this隐形传入
cout<<num1.x<<endl;
cout<<num1;//等价于operator<<(cout,num1);
return 0;
}
C++运算符重载
最新推荐文章于 2022-05-25 22:53:20 发布