重载流运算符<<中遇到的问题
1.为什么重载函数的参数顺序不可变:
由测试函数可知,将Sum()的函数名替换为operator+就是运算符的重载,第一个运算数通过this指针隐式调用,a+b实质上是
a.operator+(b),要注意的是,形参使用的是运算数的引用传递,使用const,避免修改数据,节约值传递的时间,但是返回值不能使用引用传递,对局部变量使用引用传递,变量生命结束后,找不到他的值。
2.为什么要使用ostream的引用类型:
使用void返回会带来一个问题,<<要求左边是ostream类型的对象,上面代码中的友元会使下面语句出错,不能连续输出。
返回值为os的引用,仍为ostream类型的对象。而&为operator<<的🤣🤣🤣
注意:
1、由于输入、输出运算符是可以连续调用的,因此返回值应该还是cin或者cout,所以返回ostream\istream的引用
2、由于输入、输出运算符的调用者是左边的cin、cout,我们无法在它们的类内ostream、istream内添加运算符函数,因此只能实现成全局的运算符函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话