文章目录
一. 简单介绍什么是重载运算符
1.重载运算符的定义
运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。-- 百度
将系统预定义的运算符,用于用户自定义的数据类型,这就是运算符重载。运算符重载的实质就是函数重载 – b站
通俗一点来说,就是编译软件本身的运算符不符合我们想要的运算符定义,我们需要重新定义运算符来达到我们的目的。 比如我们定义一个名为xlx77的结构体,当我们想直接输出一个结构体的时候是不被允许的,我们就可以重新定义 << ,来达到我们的目的
2. 重载运算符的基本格式
重载运算符的一般格式为:
返回类型 operator@(参数表)
{
重载函数体;
}
3. 可以重载的运算符和不能重载的运算符
4. 重载运算符的规则
1. 不允许定义新的运算符
2. 不能改变该运算符操作数(对象)的个数
3. 不能改变该运算符的优先级别和结合性
4. 应该符合实际需要,重载的功能应该与运算符原有的功能相似,避免没有目的的使用重载运算符
5.重载运算符函数的分类
- 成员运算符函数
- 友元运算符函数
运算符重载为友元函数,在相应的类中声明为该类的友元函数,声明的一般形式为:
friend 返回类型 operator@(参数表){函数体}
二. 几种常见运算符的重载
总代码:
我定义了一个名为xlx77的结构体,内有两个double元素a和b,重载了 + ,前置++,后置++, = , << , >> 等运算符。
#include<iostream>
using namespace std ;
class xlx77
{
public:
double a , b ;
void show()
{
cout << a << b << endl;
}
xlx77 operator+(xlx77 & c2){
xlx77 temp;
temp.a = this ->a + c2.a;
temp.b = this ->b + c2.b;
return temp;
}
xlx77 operator++(){
//前置
this ->a ++;
this ->b ++;
return *this;
}
xlx77 operator++(int){
//后置
xlx77 temp = *this;
this ->a ++;
this ->b ++;
return temp;
}
xlx77 operator=(const xlx77 & c){
this ->a = c.a;
this ->b = c.b