c++远征之模板篇——运算符重载

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


一、运算符重载的概念

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

二、运算符重载的本质

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

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

1、一元运算符重载

负号的重载

(1)成员函数重载

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

   


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



(2)友元函数重载

  • 需要传入参数






++符号的重载

(1)前置++符号重载

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




(2)后置++符号重载

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






2、二元运算符重载

加号运算符的重载

(1)成员函数重载形式





(2)友元函数重载形式









输出运算符的重载

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





索引运算符的重载 [ ]

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

  

 




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

frp对http协议应用

前言 frp是一个开源的项目, 可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。 github地址:https://github.com/fatedier/frp 此处对http的应用做…

树形列(无限级联下拉列的曲线版本)

先上效果图: 1、列表 - 列表设置 - 创建栏,“类型”选择“托管元数据”,如下图: 2、选中“托管元数据”后,可以到下面编辑需要的树形啦: 3、编辑好,确定,搞定;可以到列表…

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

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

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

以下内容源于慕课网的学习整理,如有侵权,请告知删除。 常见的设计模板 1、vector,向量 (1)本质是对数组的封装; (2)能够在常数时间内完成读取; (3&#xf…

数据结构探险——队列篇

以下内容源于慕课网的学习整理,如有侵权,请告知删除。 1、什么是队列? (1)先入先出的模型(FIFO)。 (2)队头,队尾。 (3)细分为普通队…

数据结构与算法之冒泡排序

转载于:https://www.cnblogs.com/yakun/p/3634457.html

数据结构探险——栈篇

以下内容源于慕课网的学习整理,如有侵权,请告知删除。 1、栈要素 栈底(不变)、栈顶(随着入栈和出栈而改变) 2、栈机制的实现 (1)栈的相关机制 判断栈的空满;入栈、出栈…

windows下修改tomcat的startup.bat脚本文件后台运行

1、修改startup.bat文件 rem Get remaining unshifted command line arguments and save them in the set CMD_LINE_ARGS :setArgs if ""%1"""""" goto doneSetArgs set CMD_LINE_ARGS%CMD_LINE_ARGS% %1 shift goto setArgs :doneSet…

开源框架:CocoaPods 安装学习教程

转载 开源框架:CocoaPods 引言: CocoaPods是一个可以帮你集中管理第三方库的开源项目,运行在Ruby的环境下,基于GitHub托管优势,你可以很方便的查阅目前依赖于CocoaPods的资源. 并且,CocoaPods是可靠,稳定,安全的.可以为你在使用第三方库资源时节省大部分的配置和部署时间.更专心…

SESSION 回收机制

session.gc_maxlifetime session.gc_probability session.gc_divisor session.gc_divisor 与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc(garbage collection 垃圾回收)进程的概率。此概率用 gc_probability/gc_divisor 计算得来…

数据结构探险——线性表篇

以下内容源于慕课网的学习整理,如有侵权,请告知删除。 1、线性表 概念 机制的实现 2、顺序表 构造函数、析构函数 清空线性表,判空 求当前线性表长度,获取某个序号的元素 定位某个元素的位置 找前驱(找后驱类似的&…

Mysql优化之执行计划查看

我们经常说到mysql优化,优化中一种常见的方式就是对于经常查询的字段创建索引。那么mysql中有哪些索引类型呢? 一、索引分类1、普通索引:即一个索引只包含单个列,一个表可以有多个单列索引 2、唯一索引:索引列的值必须…

jmeter+Fiddler:通过Fiddler抓包生成jmeter脚本

Fiddler是目前最常用的抓包工具之一,它作为客户端和服务器端之间的代理,记录客户端和服务器之间的所有请求(http/https),可以针对特定的请求过滤,分析请求和响应的数据、设置断点、调试、修改请求的数据,甚至可以修改服…

数据结构探险——树篇

以下内容源于慕课网的学习整理,如有侵权,请告知删除。 树存在概念中,是对数组或者链表的一种操作方式的概念。 一、与树有关的一些基础概念 (1)树 有限节点的集合; (2)度 某个节点的…

grub rescue的修复方法

2019独角兽企业重金招聘Python工程师标准>>> 在win7下删除了ubuntu的swap交换空间的分区(大约6G左右,根据自己的实际分区情况决定)。重新启动电脑进入界面,直接显示: error:unknow filesystemgrub rescue&g…

jmeter强大的扩展插件!!

jmeter4.0以上版本,如jmeter5.1.1版本的集成插件,只需要在官网下下载“plugins-manager.jar”包,放在jmeter安装路径的lib/ext目录下即可使用。(但该jar包包含的插件,还不能满足所需的功能,如服务器系统资源…

数据结构探险——图篇

以下内容源于慕课网的学习整理,如有侵权,请告知删除。 1、图的相关概念 2、图的存储结构 第一种是用数组表达,第二三种用链表来表示有向图,最后一种链表来表示无向图。(1)邻接矩阵(有向无向都可…

jmeter+WebDriver:启动浏览器进行web自动化

无论是web自动化还是手机app自动化,WebDriver是Selenium的核心模块,jmeter WebDriver 仅支持Firefox、Chrome 和 HTML Unit驱动,暂不支持IE 驱动。 一、下载JMeterPlugins-WebDriver插件并配置分享我的网盘下载地址:https://pan.b…

LeetCode2——Add Two Numbers(两个链表中的数字相加,形成新链表)

鄙人不才,故收录LeetCode中的解法和代码。 题目: 参考解法: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { publi…

Linux基础(九)--定时任务

本文主要介绍了Linux中定时任务的相关知识。在日常中,有一些任务需要定时执行,例如:每天定时更新杀毒软件的数据库,每天定时执行数据清洗等脚本。这里就需要做定时任务。(1)概述在Linux中定时任务主要分为两…