1. 程式人生 > >(轉)為什麼operator運算子過載一定要為友元函式呢

(轉)為什麼operator運算子過載一定要為友元函式呢

如果是過載雙目操作符(即為類的成員函式),就只要設定一個引數作為右側運算量,而左側運算量就是物件本身

而 >> 或<< 左側運算量是 cin或cout 而不是物件本身,所以不滿足後面一點,就只能申明為友元函數了

如果一定要宣告為成員函式,只能成為如下的形式:

ostream & operator<<(ostream &output)

{

  return output;

}

*所以在運用這個<<運算子時就變為這種形式了:data<