| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C++运算符重载 -> 正文阅读 |
|
[C++知识库]C++运算符重载 |
C++运算符重载重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。 一般参数列表根据运算符的特点进行设计。
在这里给出一个技巧,我们可以把运算符看作函数名,例如:
我们可以看作:
再比如:
我们可以看作:
疑问:运算符重载,我们把运算符看作一个函数名,并且这个函数还有返回值,那么最后这个返回值给谁了? 问题回答:运算符重载中,返回值到底返回到哪了?以下面两个问题为例子来进行分析:
当我们重载基本的+运算符的时候,我们应该不改变运算符两边变量的值,而应返回目标类型的新对象,而且在这里,我们确确实实需要创建一个第三方来保存运算结果,否则我们的函数毫无意义。 重载+运算符这个例子,跟我们常规编写函数的思想非常一致,都是根据参数,获得一个返回值,然后可以调用这个返回值。而对于ostream类型的对象,我们再来分析一下:
该函数,是将参数os在函数体中修改以后,再将其返回,实际上,可以这样理解: 未重载"<<"时输出data_对象数据需要:
此时,<<调用的是C++库中的函数,它完成数据的装入以及显示功能。 而重载"<<"后: os可以直接用<<对data_类型的变量进行输出,即:
而实际上,它会调用我们编写的重载函数,然后是在函数体中实现:
而不用再显式地编写对应每个成员的输出语句。 在这个地方之所以产生疑问是因为: 传统的函数返回值,通常会被另一个第三方接收,而在这里,我们并没有发现任何一个第三方,所以就会产生返回值不知去向的感觉。实际上,将os返回以后,并没有任何第三方接收数据,也不需要接收数据,我们只需要在函数体中隐式地进行由基本<<实现的功能的堆叠,然后完成每个成员值的输出即可。这种堆叠就会导致我们认为<<产生了新的功能。实际上这种新的功能,还是由多个基本<<语句结合起来实现的。 由上可得,我们的
可以改写为:
验证:函数实现:
输出:
结果:
函数实现:
输出:
结果:
(文章作学习笔记使用,本人水平有限,若有纰漏,欢迎指正) |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 16:47:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |