我们可以重定义或重载大部分 C++ 内置的运算符。这样,就能使用自定义类型的运算符。
重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。

Box operator+(const Box&);

声明加法运算符用于把两个 Box 对象相加,返回最终的 Box 对象。大多数的重载运算符可被定义为普通的非成员函数或者被定义为类成员函数。如果我们定义上面的函数为类的非成员函数,那么我们需要为每次操作传递两个参数,如下所示:

Box operator+(const Box&, const Box&);

下面的实例使用成员函数演示了运算符重载的概念。如下所示:

#include <iostream>using namespace std;class Person{
public:Person(int num) : age(num){}/* 类成员函数 */int operator+(const Person &temp){return (this->age+temp.age);}int age;
};/* 非类成员函数 */
int operator-(const Person &a, const Person &b){return (a.age-b.age);
}int main()
{Person John(20), Tom(18);cout << John+Tom << endl;cout << John-Tom << endl;return 0;
}

可重载运算符/不可重载运算符

下面是可重载的运算符列表:

分类 符号
双目算术运算符 + (加),-(减),*(乘),/(除),% (取模)
关系运算符 ==(等于),!= (不等于),< (小于),> (大于>,<=(小于等于),>=(大于等于)
逻辑运算符 (逻辑或),&&(逻辑与),!(逻辑非)
单目运算符 + (正),-(负),*(指针),&(取地址)
自增自减运算符 ++(自增),--(自减)
位运算符 (按位或),& (按位与),~(按位取反),^(按位异或),,<< (左移),>>(右移)
赋值运算符 =, +=, -=, *=, /= , % = , &=, ^=, <<=, >>=
空间申请与释放 new, delete, new[] , delete[]
其他运算符 ()(函数调用),->(成员访问),,(逗号),(下标)

下面是不可重载的运算符列表:

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

参考自《 runoob 》

转载于:https://www.cnblogs.com/GyForever1004/p/8470419.html

C++ 重载运算符简单举例相关推荐

  1. C# 中的 is 和 as 运算符 简单举例说明

    假设有一个接口:IBankAccount:一个类SaverAccount,类SaverAccout继承自IBankAccount接口,如下图所示: public interface IBankAcco ...

  2. 漫谈C++重载运算符

    1.前置运算符和后置运算符,左值和右值 其实很久以来一直都没有怎么搞清楚左值和右值的区别,只知道左值可以放在等号的左边,也可以放在等号的右边,但是右值却只能放在等号的右边,然后形成一个大概直观的印象, ...

  3. kotlin之重载运算符(十一)

    目录 1. 运算符重载概念 2. 重载运算符类型 3. 重载复合赋值运算符 4. 重载一元运算符 5. 重载比较运算符 1. 运算符重载概念 简单来说,就是Kotlin通过调用自己代码中定义特定的函数 ...

  4. 类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、重载运算符、三/五法则

    文章目录 6个默认成员函数 构造函数 概念 默认构造函数的类型 默认实参 概念 默认实参的使用 默认实参声明 全局变量作为默认实参 某些类不能依赖于编译器合成的默认构造函数 第一个原因 第二个原因 第 ...

  5. C++重载函数和重载运算符

    函数重载 我们明白函数重载的作用就可以明白函数重载该如何写了.简单的说函数重载是为了实现某种意义上的多态,这种多态呢?简单点讲,同一个函数,传入不同的参数,有不同的表现.所以我们知道函数重载至少有两个 ...

  6. C++结构体:默认构造函数,复制构造函数,重载=运算符

    新博客地址 www.virtclouds.com 原文地址 http://www.virtclouds.com/544.html C++结构体提供了比C结构体更多的功能,如默认构造函数,复制构造函数, ...

  7. 重载运算符operator

    运算符重载注意点: 1.算术和关系操作符返回的是一个左值或右值,而不是一个引用 2.赋值操作符一定要定义为成员函数如"=" 3.一般而言,赋值操作符和复合赋值操作符应返回左操作数的 ...

  8. C# 重载 Equals() 方法、重载运算符、声明显隐式转换的简要整理

    自动生成 可以使用 JetBrains ReSharper 的代码生成功能来自动生成各种结构性的或可重载的成员,而不必自行手写,因为非常麻烦且易错. 如确需手写,可参考本文. 引用类型和值类型 本文不 ...

  9. C++ 重载函数和重载运算符

    C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不 ...

最新文章

  1. Jmeter组件执行顺序与作用域
  2. ACMNO.18 C语言-选择排序 用选择法对10个整数从小到大排序。 输入 10个整数 输出 排序好的10个整数
  3. http 里面的post和get区别
  4. redis.conf配置选项如下
  5. hdfs复制文件夹_一文理解HDFS
  6. python 获取指定目录下的图片文件
  7. Swift UIlabel 的高级用法,文本显示表情,图片
  8. QString之simplified()含义
  9. 【WC2018】通道【边分治】【虚树】【树的直径】
  10. js 动态绑定事件 on click 完美解决绑定不成功
  11. 资源| 深度学习公众号推荐(值得关注的公众号)
  12. springmvc返回jsp源代码解决办法
  13. matlab逐步线性回归分析法,[转载]matlab 回归分析
  14. 卖家/消费者如何在淘宝申请人工客服
  15. error: incompatible types when assigning to type ‘const struct wiphy_wowlan_support‘
  16. S7-1200PLC定时器计数器的应用
  17. CTF-PWN学习-为缺少指导的同学而生
  18. selenium 中 get_attribute 的几种用法
  19. 掌握python机器学习-读书笔记8 (抽样回归算法)
  20. 计算机主板所采用的cpu接口,主板中的CPU_FAN、SYS_FAN、CPU_OPT、AIO_PUMP是什么接口...

热门文章

  1. 一步一步Asp.Net MVC系列_权限管理总结(附MVC权限管理系统源码)
  2. Calling Oracle stored procedures from Microsoft.NET
  3. .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  4. php数组包含对象吗,在包含数组的PHP对象上调用方法
  5. java for嵌套for循环语句_java中的for循环嵌套语句怎么执行?
  6. Java获取照片的Exif信息,并解析GPS
  7. 使用cv2.Sobel()、cv2.Scharr()、cv2.Laplacian()寻找图像的梯度、边缘
  8. Shutil.move PermissionError: [WinError 82] 无法创建目录或文件,以及PermissionError: [Errno 13] Permission denied
  9. 深蓝学院的深度学习理论与实践课程:第一章
  10. 【物料钢卷识别与定位】:1.读取数据(获取原始数据)