偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C++ 流插入和流提取運(yùn)算符的重載

開(kāi)發(fā) 后端
要想流插入 << 運(yùn)算符和流提取 >> 運(yùn)算符能針對(duì)自定義的對(duì)象,那么我們就需要重載針對(duì)該對(duì)象的 ostream 類(lèi)的 << 運(yùn)算符 和 istream 的 >> 運(yùn)算符,并且只能重載成全局的函數(shù)。

 — 1 —
<< 運(yùn)算符的重載

C++ 在輸出內(nèi)容時(shí),最常用的方式: 

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

提出問(wèn)題:

  •  那這條語(yǔ)句為什么能成立呢?
  •  cout 是什么?為什么 << 運(yùn)算符能用在 cout 上呢?

原因:

  •  實(shí)際上,cout 是在 iostream 頭文件中定義的 ostream 類(lèi)的對(duì)象。
  •  << 能夠用在 cout 上是因?yàn)?,?ostream 類(lèi)對(duì) << 進(jìn)行了重載。

對(duì)于如下這條語(yǔ)句: 

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

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

  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;  

那么在使用流插入<<運(yùn)算符時(shí),等價(jià)于的形式如下:

01 數(shù)據(jù)類(lèi)型是int類(lèi)型時(shí): 

  1. std::cout << 1

上面的語(yǔ)句,等價(jià)于: 

  1. cout.operator<<(1); 

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

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

上面的語(yǔ)句,等價(jià)于: 

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

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

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

上面的語(yǔ)句,等價(jià)于: 

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

假定我們要想把某個(gè)對(duì)象里的內(nèi)容進(jìn)行打印輸出,那么我們可以重載 ostream 類(lèi)的流插入 << 運(yùn)算符。

下面以 CStudent 類(lèi)作為例子:

輸出結(jié)果: 

  1. 1,20,小林coding 

需要注意: 

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

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

— 2 —

>> 運(yùn)算符的重載

還是以 CStudent 類(lèi)作為例子,假設(shè)想通過(guò)鍵盤(pán)的輸入的內(nèi)容,來(lái)初始化對(duì)象,則我們可以重載 istream 類(lèi)的流提取 >> 運(yùn)算符。

輸入內(nèi)容和輸出內(nèi)容: 

  1. // 輸入內(nèi)容:  
  2. 1,20,小林coding  
  3. // 輸出內(nèi)容:  
  4. 1,20,小林coding 

— 3 —

小結(jié)

要想流插入 << 運(yùn)算符和流提取 >> 運(yùn)算符能針對(duì)自定義的對(duì)象,那么我們就需要重載針對(duì)該對(duì)象的 ostream 類(lèi)的 << 運(yùn)算符 和 istream 的 >> 運(yùn)算符,并且只能重載成全局的函數(shù)。

然后在 CStudent 類(lèi)里需要把上面的兩個(gè)重載函數(shù)聲明成友元函數(shù),使得兩個(gè)重載的函數(shù)可以訪(fǎng)問(wèn)和賦值 CStudent 類(lèi)里的私有成員函數(shù)。 

 

責(zé)任編輯:龐桂玉 來(lái)源: C語(yǔ)言與C++編程
相關(guān)推薦

2011-07-15 01:34:36

C++重載運(yùn)算符

2024-01-26 16:37:47

C++運(yùn)算符開(kāi)發(fā)

2009-08-12 10:47:03

C#運(yùn)算符重載

2011-07-15 10:08:11

C++運(yùn)算符重載

2009-08-12 12:46:11

C#運(yùn)算符重載

2009-09-04 13:18:10

C#允許運(yùn)算符重載

2009-08-12 10:27:12

C#運(yùn)算符重載運(yùn)算符重載實(shí)例

2009-08-12 10:56:47

C#運(yùn)算符重載C#運(yùn)算符重載實(shí)例

2009-08-14 10:16:57

C#運(yùn)算符重載

2020-09-30 14:04:25

C++運(yùn)算符重載

2010-03-26 12:54:27

Python嵌入C++

2021-12-15 10:25:57

C++運(yùn)算符重載

2009-08-12 11:20:51

C#運(yùn)算符重載

2009-08-12 10:37:13

C#運(yùn)算符重載

2021-12-16 10:40:11

C++運(yùn)算符重載

2021-06-07 06:10:22

C++While循環(huán)For 循環(huán)

2023-09-07 23:30:47

運(yùn)算符C++

2009-08-11 15:51:08

C#運(yùn)算符算術(shù)運(yùn)算符

2022-09-19 08:10:37

運(yùn)算符函數(shù)語(yǔ)言

2009-08-12 15:02:49

C#賦值運(yùn)算符簡(jiǎn)單賦值運(yùn)算符
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)