為了與io標準庫一致,過載輸入輸出運算子函式的第乙個行參應該是流的引用,第二個行參是物件的引用。
如果過載為類的成員函式,第乙個行參應該是物件的引用,第二個行參是流的引用。
使用方式是 classobj << cout 這樣與標準io庫就不一致了,所以輸入輸出運算子不能過載為類的成員函式,可以過載為類的友元函式和普通函式。
通常過載輸出運算子的第二個行參是const的,因為輸出乙個類不許要更改它;
但是過載輸入運算子的第二個行參必須是非const的,否則無法賦值。
過載的基本方法如下:
//過載輸出運算子
ostream& operator
<<(ostream& out, const classtype&obj)
//過載輸入運算子
istream& operator
<<(istream& in, classtype&obj)
例子:類persion使用友元函式的方式過載了輸入輸出運算子,類persiona使用了普通函式過載了輸入輸出運算子。
#include #includeusing
namespace
std;
class
persion
//operator overload : <<
friend ostream& operator
<<(ostream& out, const persion& ref
)
//operator overload : >>
friend istream& operator>>(istream& in, persion& ref
) ;
unsigned
int ag = 0
;
double he = 0
;
double we = 0
;
in>>name>>ag>>he>>we;
//check that if the inputs succeeded
if (in
)
else
returnin;
}private
:
char name[40
]; unsigned
intage;
double
height;
double
weight;
};class
persiona
//getdata
char* getname(void)
unsigned
int& getage(void)
double& getheight(void)
double& getweight(void)
private
:
char name[40
]; unsigned
intage;
double
height;
double
weight;
};//
operator overload : <<
ostream& operator
<<(ostream& out, persiona& ref)//
operator overload : >>
istream& operator>>(istream& in, persiona& ref);
unsigned
int ag = 0
;
double he = 0
;
double we = 0
;
in>>name>>ag>>he>>we;
//check that if the inputs succeeded
if (in
)
else
returnin;
}int main(void
)
C 運算子過載 輸入 輸出運算子
為了與io標準庫一致,過載輸入輸出運算子函式的第乙個行參應該是流的引用,第二個行參是物件的引用。如果過載為類的成員函式,第乙個行參應該是物件的引用,第二個行參是流的引用。使用方式是 classobj cout 這樣與標準io庫就不一致了,所以輸入輸出運算子不能過載為類的成員函式,可以過載為類的友元函...
過載輸入輸出運算子
我們平時可以用流 std cout str n 輸出 輸入字串和整型等內建型別的值。但是對於我們自定義的類,比如 student 類,卻不能直接通過 cout student 這樣的形式來輸出類的內容或給類賦值。怎麼辦呢?我們可以通過過載輸出 輸入運算子,讓自定義的類也支援這樣的操作。通常情況下,輸...
過載輸入輸出運算子
過載輸入輸出運算子 過載輸出運算子 第二個引數一般來說是乙個常量的引用,該常量是我們想要輸出的類型別。用引用是因為我們希望避免複製實參 用常量是因為通常列印物件的時候不需要改變物件的內容 輸出運算子應儘量減少格式化的操作,尤其是換行符,這樣有利於使用者對輸出格式的控制。一般會宣告為友元函式 frie...