我是靠谱客的博主 傻傻小笼包,这篇文章主要介绍深度剖析ostream&,现在分享给大家,希望可以做个参考。

        虽然C++学了大半个月了,自己学了解了很多关于C++的知识,大的概念懂了不少,但是还是想说想要彻底的弄懂C++,绝非易事。当别人问到一个很小的知识点些许你都要愣很久,事实告诉我们不能太好高骛远。

为什么要写ostream而不是istream,因为当我们自定义类型(student类)的时候,如果需要输出(student类)就会需要用到操作符重载(<<)。


为什么函数参数ostream和函数参数ostream需要加引用呢?引用是谁呢?不写会怎样呢?

如果写成这样
ostream operator << (ostream& out, const student& s)
则:
out<<s.num<<" "<<s.ch;
错误,只能写为:
out<<s.num;
out<<s.ch;
原因在于
out<<s.num<<s.ch;
相当于:
(out<<s.num)<<s.ch;
()中返回cout的临时变量,它不可以作为左值。因而错误。
如果写成:
ostream operator << (ostream& out, const student& s) 
则:cout<<s.num<<s.ch;正确,因为它等同于(out<<s.num)<<s.ch;(out<<s.num)返回out的引用,即就是它自己,它可以再次作为左值。因而能够连着写这个输出流
函数里面加return out这是经常写的这种形式
但是out引用的对象就是cout,输出到out里那么cout也改变了,return out也可以不要,结果正确。

最后

以上就是傻傻小笼包最近收集整理的关于深度剖析ostream&的全部内容,更多相关深度剖析ostream&内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(111)

评论列表共有 0 条评论

立即
投稿
返回
顶部