新标准C++(郭炜)第四章细节问题小结(1):运算符重载(一)
一.运算符重载的概念和原理(P65-P66)
运算符重载的目的:使得C++中的运算符也能用来操作对象。
---------------->运算符重载的实质是编写以运算符作为名称的函数
运算符函数的格式如下:
返回值类型 operator 运算符(形参表)
{............
}
包含被重载的运算符的表达式会被编译成对运算符函数的调用,运算符的操作数成为函数调用时
的实参,运算的结果就是函数的返回值。运算符可以被多次重载。运算符可以被重载为全局函数,也可以被重载为成员函数。一般来说,倾向于将运算符重载为成员函数。
--------------->运算符重载为全局函数时,参数的个数等于运算符的目数(即操作数的个数);运算符重载为成员函数,参数的个数等于运算符的目数减一。
---------------->"类名(构造函数实参表)"这种写法表示生成一个临时对象。
二.重载赋值运算符"=’’(P67-P69)
C++规定:“=”只能重载为成员函数。
===》赋值运算符两边可以不匹配:
#把一个int类型变量赋值给一个Complex对象
#把应该char*类型的字符串赋值给一个字符串对象
三.浅拷贝和深拷贝(P69-P71)
=====》浅拷贝:
如果没有经过重载,“=”的作用就是把左边的对象的每个成员变量都变得跟右边的对象相等,即执行逐个字节拷贝的工作,这种拷贝叫做“浅拷贝”
=====》深拷贝:
经过重载,赋值号“=”的功能不再是浅拷贝,而是将一个对象中指针成员变量指向的内容复制到另一个对象中指针成员变量指向的地方。这样的拷贝就叫做“深拷贝”
如:
String& operator=(const String& s)
{
if(str)delete[]str;
str=new char[strlen(s(str))+1];
strcpy(str,s.str);
return *this;
}
//运算符重载时,好的风格–尽量保留运算符原本的特性。
新标准C++(郭炜)第四章细节问题小结(1):运算符重载(一)相关推荐
- 新标准C++(郭炜)第二章细节问题小结
一.面向对象的程序设计 结构化程序设计/// 结构化程序设计是一种面向过程的程序设计,过程是用函数实现的.因此,结构化程序设计归根到底就是如何将整个程序分成一个个函数,哪些函数需要相互调用以及每个函数 ...
- 一篇文章带你了解Python运算符重载
回复"python"即可获赠从入门到进阶共10本电子书 今 日 鸡 汤 不堪玄鬓影,来对白头吟. 您可以根据所使用的操作数来更改Python中运算符的含义.这种做法称为运算符重载, ...
- 实验四---继承与派生练习以及运算符[ ]重载练习
1. 车辆基本信息管理 问题场景描述如下: 为了对车量基本信息进行管理,对现实世界车量基本信息抽象后,抽象出Car类.ElectricCar类.Battery类, 它们之间的关系描述如下:基于Car类 ...
- UNIX文件表示(四章)
2019独角兽企业重金招聘Python工程师标准>>> UNIX文件表示(四章) 一.索引节点 索引节点以静态形式存在于磁盘上,核心把它们读进内存索引节点表中以操纵它们.磁盘索引节 ...
- c语言c11标准 pdf,C语言新标准C11
这是2011年制定的一个新标准,顺便翻译一下第一章的Scope. 为什么要翻译第一章?因为我发现,过去的C语言题库中总喜欢拿C语言标准中未定义的行为和未指定的行为来说事,比如函数参数传值顺序问题-- ...
- STM32固件库(标准外设库)入门学习 第四章OLED屏幕使用
STM32固件库(标准外设库)入门学习 第四章OLED屏幕使用 本学习教程,参考B站江科大自化协STM32视频,型号为STM32F103C8T6. 文章目录 STM32固件库(标准外设库)入门学习 第 ...
- 【正点原子FPGA连载】第十四章 串口通信实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- CDISC的ADaMIG (V1.2) 中英文对照【4】_第四章(下)实施问题,标准解决方案和示例
本AdaMIG (v1.2)来自CDISC官网以下链接: https://www.cdisc.org/standards/foundational/adam/adam-implementation-g ...
- 系统集成项目管理工程师(软考中级)—— 第二十四章 收尾管理、知识产权、法规标准规范 笔记分享
前言 现在分享一些笔记给大家,希望能够帮助大家并顺利通过软考. 幕布地址:第二十四章 收尾管理.知识产权.法规标准规范 - 幕布 概述 大数据 收尾 收尾管理工作 ①项目验收工作 是项目收尾管理中的首 ...
最新文章
- CodeForces Round #287 Div.2
- 图片的裁剪、旋转、平移、模糊
- 转载:2016前端开发技术巡礼
- JQuery知识点汇总
- php键名改为0.1.2.3,揭秘 0.1 + 0.2 != 0.3(php 请自觉点用round)
- δ在web里面怎么输入_【高等数学】用ε-δ语言证明函数极限
- OSI 参考模型与TCP/IP 参考模型的比较
- sencha touch 手势识别左右滑动
- python变量的输入
- Heritrix 3.1.0 源码解析(十一)
- 商品WEB开发的商品定单与存储过程的应用
- 2018清华计算机类专业录取分数线,清华大学2018-2019年各省各专业录取分数线
- ES6 json转map map转json
- O2O营销模式(Online To Offline)
- eclipse 注销快捷键
- php转foloat,PHP: Descrierea directivelor de bază ale php.ini - Manual
- 人事档案的重要性及注意事项
- 云南省初中计算机考试试题,云南省初中学业水平考试信息技术(中考)总复习资料+信息技术中考复习题...
- 拔丝芋头的Java学习日记--Day1
- 摸个鱼的功夫,搞懂双亲委派机制
热门文章
- 5.4 PCIe——硅后测试
- 200多元打造笔记本导航!超值GPS模块推荐
- 国内率先自主数字源表及IGBT测试系统亮相半导体分立器件年会
- openwrt的openclash提示【更新失败,请确认设备闪存空间足够后再试】
- 2020年有时用到的技术网址
- CVE-2019-19781 Citrix ADCNetScaler远程命令执行漏洞
- 三轴加速度计解算姿态(四元数)
- 电子科技大学计算机学院夏令营作用,电子科技大学计算机科学与工程学院(专业学位)计算机技术保研夏令营...
- sklearn TfidfVectorizer、CountVectorizer词袋、 TfidfTransformer词频模型区别及词表、idf获取、cosine计算、bm25相关性
- android换iphone教程,换手机必看 Android转iPhone换机教程