C 過載輸入流 輸出流運算子

2022-09-07 08:06:08 字數 660 閱讀 6800

在c++中類的私有成員是不能被直接訪問的,需要通過類中提供的成員函式簡介的操作這些資料。同時c++ 能夠使用流提取運算子 >> 和流插入運算子 << 來輸入和輸出內建的資料型別。可以過載流提取運算子和流插入運算子來操作物件等使用者自定義的資料型別。

但是如果直接在類內部直接過載輸入、輸出流運算子,那麼在使用時只能通過obj>>cin //相當於obj.operator>>(cin)

或是obj《例如:c++ 輸入/輸出運算子過載——菜鳥教程

用友元的方式有利有弊,通常它可以在較為頻繁訪問類私有成員時代替呼叫函式成員這一步驟,節省一些不必要的呼叫,減輕**量提高效率,但同時它也破壞了內的封裝性,不安全。

所以,我這裡沒有採取友元的方式去過載,而是通過在類外新實現了一種方法,在函式內部實現這一過程,而留給使用者的介面任然是以前得讀寫習慣,**如下:

class date

~date() {}

istream & operator>>(istream &in)

ostream & operator<<(ostream &out) const

ostream & operator<<(ostream &out,const date &date)

C 過載輸入流 輸出流運算子(非友元方式過載)

在c 中類的私有成員是不能被直接訪問的,需要通過類中提供的成員函式簡介的操作這些資料。同時c 能夠使用流提取運算子 和流插入運算子 來輸入和輸出內建的資料型別。可以過載流提取運算子和流插入運算子來操作物件等使用者自定義的資料型別。但是如果直接在類內部直接過載輸入 輸出流運算子,那麼在使用時只能通過o...

C 中輸入輸出流運算子的過載

cout是ostream類的物件,cin是istream類的物件。我們平時用的cout 就相當於cout.operator 也就是說正常使用 不對operator 進行函式過載,我們用的都是ostream類庫中本身定義好了函式 而當我們需要對cout 進行過載時,比如我們定義了乙個類student,...

C 運算子過載 輸入 輸出運算子

為了與io標準庫一致,過載輸入輸出運算子函式的第乙個行參應該是流的引用,第二個行參是物件的引用。如果過載為類的成員函式,第乙個行參應該是物件的引用,第二個行參是流的引用。使用方式是 classobj cout 這樣與標準io庫就不一致了,所以輸入輸出運算子不能過載為類的成員函式,可以過載為類的友元函...