日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C++流插入和流提取運算符的重載

 — 1 —
<< 運算符的重載

創(chuàng)新互聯(lián)長期為千余家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為東蘭企業(yè)提供專業(yè)的網(wǎng)站設計、成都網(wǎng)站制作,東蘭網(wǎng)站改版等技術服務。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

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

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

提出問題:

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

原因:

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

對于如下這條語句:

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

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

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

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

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

 
 
 
 
  1. std::cout << 1;

上面的語句,等價于:

 
 
 
 
  1. cout.operator<<(1);

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

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

上面的語句,等價于:

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

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

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

上面的語句,等價于:

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

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

下面以 CStudent 類作為例子:

輸出結(jié)果:

 
 
 
 
  1. 1,20,小林coding

需要注意:

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

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

— 2 —

>> 運算符的重載

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

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

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

— 3 —

小結(jié)

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

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


網(wǎng)站名稱:C++流插入和流提取運算符的重載
當前路徑:http://www.5511xx.com/article/dhigjsj.html