708
技术社区[云栖]
C++ 中cout<<endl的实现
话说像下面的语句,应该大家都明白这是通过重载operator <<函数来实现的。
cout<<123; cout<<"ssss";
但是像
cout<<endl;
是怎样实现的?
起初猜想endl是一个class或者struct,再通过一个friend函数来实现的。
但是翻下stl的实现,原来endl是一个函数!
template<typename _CharT, typename _Traits> inline basic_ostream<_CharT, _Traits>& endl(basic_ostream<_CharT, _Traits>& __os) { return flush(__os.put(__os.widen('\n'))); } __ostream_type& operator<<(__ostream_type& (*__pf)(__ostream_type&)) { return __pf(*this); }
可见当cout<<endl时,都会调用一次flush函数,这个地方可以注意下。
从下面的代码也可以看出实现原理的一二。
cout.operator <<(endl);
最后更新:2017-04-02 16:47:50
上一篇:
缓存淘汰算法系列之3——FIFO类
下一篇:
android开发中WebView的使用(附完整程序)
JavaMail学习笔记(三)、使用SMTP协议发送电子邮件(全)
C#之简单工厂模式与多态性
自定义Unity对象生命周期管理集成ADO.NET Entity Framework
android 修改系统状态栏(StatusBar)
Android数据库高手秘籍(零)——前言[转载]
八音堂BAINTA2017巨献-陈曦老师(喇叭杀手)扩声技术培训郑州站正式启动
Android手机省电指南
poj 1201/ZOJ 1508 Intervals 差分约束
9月25日云栖精选夜读:阿里云发布自研商用关系型数据库POLARDB
《Linux From Scratch》第二部分:准备构建 第五章:构建临时文件系统- 5.33. Util-linux-2.26