C++ 流插入和流提取運算符的重載

—****** 1******—

<< 運算符的重載

C++ 在輸出內容時,最常用的方式:

std::cout << 1 <<"hello";

提出問題:

  • 那這條語句為什么能成立呢?

  • cout 是什么?為什么 << 運算符能用在 cout 上呢?

原因:

  • 實際上,cout 是在 iostream 頭文件中定義的 ostream 類的對象。

  • << 能夠用在 cout 上是因為,在 ostream 類對 << 進行了重載。

對于如下這條語句:

std::cout << 1 <<"hello";

有可能按以下的方式重載成 ostream 類的成員函數(shù):

ostream & ostream::operator<<(int n)

那么在使用流插入<<運算符時,等價于的形式如下:

01 數(shù)據(jù)類型是int類型時:

std::cout << 1;

上面的語句,等價于:

cout.operator<<(1);

02 數(shù)據(jù)類型是字符串類型時:

std::cout << "hello";

上面的語句,等價于:

cout.operator<<("hello");

03 數(shù)據(jù)類型組合使用時:

std::cout << 1 <<"hello";

上面的語句,等價于:

( cout.operator<<(1) ).operator<<("hello");

— —

假定我們要想把某個對象里的內容進行打印輸出,那么我們可以重載 ostream 類的流插入 << 運算符。

下面以 CStudent 類作為例子:

image

輸出結果:

1,20,小林coding

需要注意:

ostream & operator<<(ostream & o, const CStudent & s)

函數(shù)是全局的,所以函數(shù)的第一個參數(shù)必須要傳入 ostream 的對象,并且 CStudent 類需要將此函數(shù)聲明成友元函數(shù),使得函數(shù)可以訪問 CStudent 類的私有成員變量。


—****** 2******—

>> 運算符的重載

還是以 CStudent 類作為例子,假設想通過鍵盤的輸入的內容,來初始化對象,則我們可以重載 istream 類的流提取 >> 運算符。

image

輸入內容和輸出內容:

// 輸入內容:

其實做為一個學習者,有一個學習的氛圍跟一個交流圈子特別重要這里我推薦一個C/C++基礎交流583650410,不管你是小白還是轉行人士歡迎入駐,大家一起交流成長。



?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容