【Example】C++运算符重载

首先,阅读之前要先搞清楚什么是运算符、函数重载。函数重载就是在一个范围内为一个函数声明多个实现方式,函数名必须一致。

那么C++运算符是否可以重载呢?可以!先弄清什么时候需要进行运算符重载:

假设,你有一个类或者结构体,想通过 +、-、*、/ 这种最基本的运算符直接进行计算,又或者想用 ==、|| 直接进行比较。

这时候运算符重载的作用就来了。

C++当中的运算符重载是通过 operator 关键字来实现的,当你定义了类或结构体后,编译器肯定无法智能地对类本身进行运算及比较。因此,需要根据实际需要进行运算符的重载。

下面一段代码是在一个类中对 = 进行了一个最简单的重载:

可以看到,运算符重载也是一个简单的函数,它也有返回值类型、参数。 只不过它的函数名被强制要求为了【operator 关键字 + 要重载的运算符】

运算符重载的目的,就是为了实现自定义数据类型对运算符作用的支持。

既然重载了运算符,那么返回值与参数必须与运算符本意相匹配,否则编译器会报错:

重载运算符的函数体,就是对运算符作用的自定义实现:

那么有哪些运算符可以重载呢?(节选自菜鸟教程)

双目算术运算符 + (加),-(减),*(乘),/(除),% (取模) 关系运算符 ==(等于),!= (不等于),< (小于),> (大于),

不可重载的运算符:

. 成员访问运算符

成员指针访问运算符 :: 域运算符 sizeof 长度运算符 ? 条件运算符 # 预处理符号

部分可重载的运算符演示:

除此之外,可以将运算符重载声明到类外部作为全局函数,便可以进行全局重载:

但请注意,以下运算符只能作为成员函数进行重载:

() 函数调用 [] 取下标 -> 成员访问 = 赋值

Original: https://www.cnblogs.com/airchip/p/15962712.html
Author: 芯片烤电池
Title: 【Example】C++运算符重载

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606312/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球