左移运算符重载以及链式编程

2301_77193441 2023-08-25 12:07:08

ostream & operator<<(ostream &cout, person &p)//本质  operator<<(cout,p)  简化  cout<<p
{
    cout << "m_A=" << p.m_A << " m_B=" << p.m_B;
    return cout;
}
返回cout为什么前面要用ostream & operator,而且&和operator之间还有空格

...全文
195 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-08-25
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/7992353, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
Fuxi- 2023-10-17
  • 打赏
  • 举报
回复 1

在C++中,这段代码定义了一个重载的输出运算符 <<,用于将 person 类型的对象输出到输出流 cout

ostream& 表示该函数返回值的类型是一个指向 ostream 对象的引用,即输出流对象的引用。这样做是为了实现函数链式调用,将输出流对象传递给下一个输出操作符。

operator<< 是一个重载的运算符函数,表示对输出运算符进行重载。

在这段代码中,operator<< 函数接受两个参数:ostream 类型的对象 coutperson 类型的对象 p。函数内部则使用 cout 对象来输出 p 对象的成员变量。

至于为什么要在 operator<< 之间留有空格,这是一种编码风格的选择,遵循了一些常见的 C++ 标准库函数的命名约定。这种风格使代码更易读且符合一致性,但在语法上并不是强制要求。实际上,在这个地方加上空格或者去掉空格都不会影响代码的功能。

而且代码写错了你这样会报错的cout是iostream标准库里的,你可以写成out,用out对象输出p对象的内容,返回也是out对象

maguangzhi 2023-10-11
  • 打赏
  • 举报
回复

返回类型如果不是ostream &,并且return cout不返回cout,则有可能构造一个新的ostream对象,即可能与原始cout不同的新对象。这样对于你的连续输出“cout<<p1<<p2”,理论上p1和p2可能定向到不同的设备,这才是问题的实质。要学好C++,建议使用华中科技大学出版的介绍C++2023最新国际标准的教材《C++程序设计实践教程》(新国标微课版),参见https://www.zhihu.com/question/610987898/answer/3108746910?utm_psn=1695443968811302912

65,194

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧