なぜostream :: operator << charパラメーターのグローバル関数があるのですか?

StackOverflow https://stackoverflow.com/questions/4837549

  •  27-10-2019
  •  | 
  •  

質問

に注意してください http://www.cplusplus.com/reference/iostream/ostream/operator%3c%3c/ EGで定義されているOperator <<メソッドは、Ostreamのメンバーですが、Char / Char *の場合、グローバル機能です。この違いの背後にあるデザインの決定は何ですか?

役に立ちましたか?

解決

operator<< 為に streambuf* (また int より単純なケースのように聞こえます)と char メンバーオペレーターとして、または非会員(無料)オペレーターとして実装された可能性があります。

私の推測では、C ++が定義されている間にレトロ互換性の問題が発生したためです。 operator<<(int), 、したがって、彼らはそれを無料のオペレーターとして移動しないことに決めました。

C ++標準ライブラリ(およびSTL)には、このような多くの不均一性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top