以下内容源于慕课网的学习整理,如有侵权,请告知删除。

一、运算符重载的概念

  • 给原有的运算符赋予新的功能
  • 比如下面的截图,本来加号+并不具备坐标的相加的功能,但是通过运算符重载可以实现该功能。

二、运算符重载的本质

  • 本质是函数的重载;
  • 重载方式:友元函数重载、成员函数重载。即定义成一个类的友元函数,或者成员函数。

三、运算符重载的关键字operator

1、一元运算符重载

负号的重载

(1)成员函数重载

  • 虽然它不含有参数,但是它作为普通的成员函数,还是有一个隐性的this指针作为参数的。
  • 函数返回应该是它本身(只是成员取反了而已),因此应该是返回值是“类&”的形式。

  • 注意到它也是一个函数,因此有两种方式表示。

(2)友元函数重载

  • 需要传入参数

++符号的重载

(1)前置++符号重载

  • 下面是成员函数重载的形式

(2)后置++符号重载

  • 返回值不再是引用,而是一个对象。为什么呢?
  • 传入int,标明++符号是后置的而已,没有其他用途。

2、二元运算符重载

加号运算符的重载

(1)成员函数重载形式

(2)友元函数重载形式

输出运算符的重载

  • 采用友元函数重载的方式,不能采用成员函数重载的方式。

索引运算符的重载 [ ]

  • 索引运算符不能使用友元函数重载的方式,只能用成员函数重载的方式

c++远征之模板篇——运算符重载相关推荐

  1. 10-C++远征之模板篇-学习笔记

    C++远征之模板篇 本文及代码收录于个人编程笔记(整理中,欢迎Star): https://github.com/mtianyan/Programming-Notebook 将会学到的内容: 模板函数 ...

  2. 类模板与运算符重载(一个简单的例子)

    类模板与运算符重载(一个简单的例子) 标签(空格分隔): C++ 算法竞赛 下面是一段简单的代码,表示我们建立了一个类模板Vector,可以看做是对STL中vector的简单实现. 为了让这个Vect ...

  3. c++远征之模板篇——函数模板、类模板

    以下内容源于慕课网的学习整理,如有侵权,请告知删除. 函数模板(vs模板函数) 1.为什么需要模板? 函数体相同,只是类型不一样而已. 那么能否把数据的类型当做参数传递呢?肯定是可以的,这是模板. 2 ...

  4. c++远征之模板篇——标准模板库(STL)

    以下内容源于慕课网的学习整理,如有侵权,请告知删除. 常见的设计模板 1.vector,向量 (1)本质是对数组的封装: (2)能够在常数时间内完成读取: (3)定义的方法 (4)vector的常用函 ...

  5. c++远征之模板篇——静态数据成员,静态成员函数

    以下内容源于慕课网的学习整理,如有侵权,请告知删除. 1.静态数据成员 (1)不同于普通的数据成员,静态数据成员在没有实例化时,它也是存在的(即它是和类共存的): (2)它一般不依赖于构造函数的初始化 ...

  6. c++远征之模板篇——友元函数、友元类

    以下内容源于慕课网的学习整理,如有侵权,请告知删除. 一.友元函数 1.分类 全局函数-->友元全局函数 成员函数-->友元成员函数 2.关键字friend 友元全局函数 如下,利用fri ...

  7. 智能指针:-和*运算符重载 + 模板技术 实现智能指针(C++)

    智能指针介绍 在C++中,我们都知道在堆区new 开辟的内存,必须通过delete 进行内存释放,不然会形成内存泄漏.有时候我们使用了new 后在 写了很多代码,忘记delete 也是很正常的.那么我 ...

  8. 笔记②:牛客校招冲刺集训营---C++工程师(面向对象(友元、运算符重载、继承、多态) -- 内存管理 -- 名称空间、模板(类模板/函数模板) -- STL)

    0618 C++工程师 第5章 高频考点与真题精讲 5.1 指针 & 5.2 函数 5.3 面向对象(和5.4.5.5共三次直播课) 5.3.1 - 5.3.11 5.3.12-14 友元 友 ...

  9. 运算符重载、STL模板库、类型转换、异常处理机制(C++五)

    目录 一.运算符重载 1. 引入运算符重载 2.语法格式 3.运算符重载有两种表现形式 4.运算符重载分类 5.运算符重载的特点: 二.C++中的STL模板库的使用 1.容器类(container) ...

最新文章

  1. keras 多个显卡
  2. 32款iOS开发插件和工具介绍[效率]
  3. 腾讯校招历年经典面试汇总:C++研发岗
  4. 软件工程 Beta 阶段 团队贡献分数
  5. JAVA设计一个电视机类_漫谈Java程序设计中的接口应用
  6. Google Map API运行提示Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
  7. centos 图形模式与命令行模式设置
  8. mysql分级建表_Mysql如何使用命令实现分级查找帮助详解
  9. 我来告诉你,草根程序员如何进入BAT
  10. 快点射!(Swift Injection) 不带这样的!
  11. 荣达嵌入式打印机打印效果
  12. 一款功能强大的Web接口和网页测试工具
  13. 【SpringBoot】Error creating bean with name ‘methodValidationPostProcessor‘ defined in class path reso
  14. 教会微信:突破文件发送100M限制
  15. C语言中的fgets函数
  16. 在线创建LaTeX表格的方法
  17. 冲量在线要做数据流通基础设施服务商
  18. 基于51单片机的温控系统
  19. 理解图像卷积操作的意义
  20. Arduino Pro Micro问题汇总

热门文章

  1. day8-异常处理与网络编程
  2. EditPlus 技巧大全:[1]怎么配置PHP编译环境
  3. ASP.NET MVC3源码下载
  4. C语言实现简单的电子通讯录2
  5. 数据结构排序法之鸡尾酒排序法he快速排序法
  6. 如何让tomcat服务器运行在80端口,并且无需输入项目名即可访问项目()
  7. Mysql 数据库水平分表 存储过程
  8. 传统数据中心如何实现向云的平滑升级
  9. 2、nginx配置文件
  10. SQL Server-数据类型(七)