成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 后端
要想流插入 << 運算符和流提取 >> 運算符能針對自定義的對象,那么我們就需要重載針對該對象的 ostream 類的 << 運算符 和 istream 的 >> 運算符,并且只能重載成全局的函數。

 — 1 —
<< 運算符的重載

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

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

提出問題:

  •  那這條語句為什么能成立呢?
  •  cout 是什么?為什么 << 運算符能用在 cout 上呢?

原因:

  •  實際上,cout 是在 iostream 頭文件中定義的 ostream 類的對象。
  •  << 能夠用在 cout 上是因為,在 ostream 類對 << 進行了重載。

對于如下這條語句: 

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

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

  1. ostream & ostream::operator<<(int n)  
  2.  
  3.     .... // 輸出n整型的代碼  
  4.     return *this;  
  5.  
  6. ostream & ostream::operator<<(const char * s)  
  7.  
  8.     .... // 輸出s字符串的代碼  
  9.     return *this;  

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

01 數據類型是int類型時: 

  1. std::cout << 1

上面的語句,等價于: 

  1. cout.operator<<(1); 

02 數據類型是字符串類型時:

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

上面的語句,等價于: 

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

03 數據類型組合使用時: 

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

上面的語句,等價于: 

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

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

下面以 CStudent 類作為例子:

輸出結果: 

  1. 1,20,小林coding 

需要注意: 

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

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

— 2 —

>> 運算符的重載

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

輸入內容和輸出內容: 

  1. // 輸入內容:  
  2. 1,20,小林coding  
  3. // 輸出內容:  
  4. 1,20,小林coding 

— 3 —

小結

要想流插入 << 運算符和流提取 >> 運算符能針對自定義的對象,那么我們就需要重載針對該對象的 ostream 類的 << 運算符 和 istream 的 >> 運算符,并且只能重載成全局的函數。

然后在 CStudent 類里需要把上面的兩個重載函數聲明成友元函數,使得兩個重載的函數可以訪問和賦值 CStudent 類里的私有成員函數。 

 

責任編輯:龐桂玉 來源: C語言與C++編程
相關推薦

2011-07-15 01:34:36

C++重載運算符

2024-01-26 16:37:47

C++運算符開發

2009-08-12 10:47:03

C#運算符重載

2011-07-15 10:08:11

C++運算符重載

2009-08-12 12:46:11

C#運算符重載

2009-09-04 13:18:10

C#允許運算符重載

2009-08-12 10:27:12

C#運算符重載運算符重載實例

2009-08-14 10:16:57

C#運算符重載

2009-08-12 10:56:47

C#運算符重載C#運算符重載實例

2020-09-30 14:04:25

C++運算符重載

2010-03-26 12:54:27

Python嵌入C++

2021-12-15 10:25:57

C++運算符重載

2009-08-12 11:20:51

C#運算符重載

2009-08-12 10:37:13

C#運算符重載

2021-12-16 10:40:11

C++運算符重載

2021-06-07 06:10:22

C++While循環For 循環

2023-09-07 23:30:47

運算符C++

2009-08-11 15:51:08

C#運算符算術運算符

2022-09-19 08:10:37

運算符函數語言

2009-08-12 15:20:18

C#賦值運算符復合賦值運算符
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级黄色绿像片 | 欧美视频一区二区三区 | 色网站在线 | 国产精品久久久久久久模特 | 国产一区二 | 99久久免费精品国产男女高不卡 | 欧美区日韩区 | 久久亚洲一区二区 | aaa综合国产| 人人干天天干 | 日韩在线一区二区三区 | 中文字幕在线一区 | 天天干天天干 | 成人av网页 | 亚洲另类视频 | 亚洲国产精品久久久久 | 国产在线视频一区 | 国产精品免费看 | 欧美精品一区二区在线观看 | 久免费视频 | 粉嫩一区二区三区四区公司1 | 日韩精品久久久久久 | 精品久久久久久久久久久 | 成人欧美一区二区三区1314 | 亚洲国产高清高潮精品美女 | 国产综合精品 | 亚洲成a人片 | 九九久久久久久 | jlzzxxxx18hd护士| 91亚洲精品在线 | 国产精品伦理一区 | 欧美区在线 | 亚洲欧美日韩在线不卡 | 一区二区视频在线观看 | 国产成人在线视频 | 美国黄色一级片 | 亚洲人成人一区二区在线观看 | 欧美一区二区三区一在线观看 | 国产高清久久久 | 国产高清视频一区二区 | 国产亚洲成av人在线观看导航 |