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