4 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
class object如果實(shí)現(xiàn)了成員operator<< ,調(diào)用其對(duì)象格式o<<cout; 是不是很亂。重載運(yùn)算符為成員函數(shù)后,當(dāng)調(diào)用該運(yùn)算符時(shí),左操作數(shù)必須是該類(lèi)的實(shí)例。友元函數(shù) 流參數(shù)定義第一個(gè)參數(shù).才能調(diào)用cout<<obj;而成員函數(shù)流參數(shù)不是第一個(gè)參數(shù),調(diào)用時(shí)應(yīng)該是obj<<cout;
雖然不能“重載”為成員函數(shù),但是可以定義為新的成員函數(shù),只不過(guò)使用習(xí)慣和常例不符而已。

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
class T;
T t;
成員的話,得這么用了
t<<cout;
而不是
cout<<t
而且也無(wú)法鏈?zhǔn)绞褂昧?br/>cout<<t<<t<<t<<endl;

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果是重載雙目操作符(即為類(lèi)的成員函數(shù)),就只要設(shè)置一個(gè)參數(shù)作為右側(cè)運(yùn)算量,而左側(cè)運(yùn)算量就是對(duì)象本身。。。。。。
而 >> 或<< 左側(cè)運(yùn)算量是 cin或cout 而不是對(duì)象本身,所以不滿足后面一點(diǎn)。。。。。。。。就只能申明為友元函數(shù)了。。。
如果一定要聲明為成員函數(shù),只能成為如下的形式:
ostream & operator<<(ostream &output)
{
return output;
}
所以在運(yùn)用這個(gè)<<運(yùn)算符時(shí)就變?yōu)檫@種形式了:data<<cout;
- 4 回答
- 0 關(guān)注
- 1336 瀏覽
添加回答
舉報(bào)