新聞中心
— 1 —
<< 運(yùn)算符的重載

創(chuàng)新互聯(lián)長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為東蘭企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,東蘭網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
C++ 在輸出內(nèi)容時(shí),最常用的方式:
- std::cout << 1 <<"hello";
提出問(wèn)題:
- 那這條語(yǔ)句為什么能成立呢?
- cout 是什么?為什么 << 運(yùn)算符能用在 cout 上呢?
原因:
- 實(shí)際上,cout 是在 iostream 頭文件中定義的 ostream 類的對(duì)象。
- << 能夠用在 cout 上是因?yàn)椋?ostream 類對(duì) << 進(jìn)行了重載。
對(duì)于如下這條語(yǔ)句:
- std::cout << 1 <<"hello";
有可能按以下的方式重載成 ostream 類的成員函數(shù):
- ostream & ostream::operator<<(int n)
- {
- .... // 輸出n整型的代碼
- return *this;
- }
- ostream & ostream::operator<<(const char * s)
- {
- .... // 輸出s字符串的代碼
- return *this;
- }
那么在使用流插入<<運(yùn)算符時(shí),等價(jià)于的形式如下:
01 數(shù)據(jù)類型是int類型時(shí):
- std::cout << 1;
上面的語(yǔ)句,等價(jià)于:
- cout.operator<<(1);
02 數(shù)據(jù)類型是字符串類型時(shí):
- std::cout << "hello";
上面的語(yǔ)句,等價(jià)于:
- cout.operator<<("hello");
03 數(shù)據(jù)類型組合使用時(shí):
- std::cout << 1 <<"hello";
上面的語(yǔ)句,等價(jià)于:
- ( cout.operator<<(1) ).operator<<("hello");
假定我們要想把某個(gè)對(duì)象里的內(nèi)容進(jìn)行打印輸出,那么我們可以重載 ostream 類的流插入 << 運(yùn)算符。
下面以 CStudent 類作為例子:
輸出結(jié)果:
- 1,20,小林coding
需要注意:
- ostream & operator<<(ostream & o, const CStudent & s)
函數(shù)是全局的,所以函數(shù)的第一個(gè)參數(shù)必須要傳入 ostream 的對(duì)象,并且 CStudent 類需要將此函數(shù)聲明成友元函數(shù),使得函數(shù)可以訪問(wèn) CStudent 類的私有成員變量。
— 2 —
>> 運(yùn)算符的重載
還是以 CStudent 類作為例子,假設(shè)想通過(guò)鍵盤的輸入的內(nèi)容,來(lái)初始化對(duì)象,則我們可以重載 istream 類的流提取 >> 運(yùn)算符。
輸入內(nèi)容和輸出內(nèi)容:
- // 輸入內(nèi)容:
- 1,20,小林coding
- // 輸出內(nèi)容:
- 1,20,小林coding
— 3 —
小結(jié)
要想流插入 << 運(yùn)算符和流提取 >> 運(yùn)算符能針對(duì)自定義的對(duì)象,那么我們就需要重載針對(duì)該對(duì)象的 ostream 類的 << 運(yùn)算符 和 istream 的 >> 運(yùn)算符,并且只能重載成全局的函數(shù)。
然后在 CStudent 類里需要把上面的兩個(gè)重載函數(shù)聲明成友元函數(shù),使得兩個(gè)重載的函數(shù)可以訪問(wèn)和賦值 CStudent 類里的私有成員函數(shù)。
文章題目:C++流插入和流提取運(yùn)算符的重載
網(wǎng)站地址:http://m.fisionsoft.com.cn/article/dhigjsj.html


咨詢
建站咨詢
