なぜostream :: operator << charパラメーターのグローバル関数があるのですか?
質問
に注意してください http://www.cplusplus.com/reference/iostream/ostream/operator%3c%3c/ EGで定義されているOperator <<メソッドは、Ostreamのメンバーですが、Char / Char *の場合、グローバル機能です。この違いの背後にあるデザインの決定は何ですか?
解決
operator<<
為に streambuf*
(また int
より単純なケースのように聞こえます)と char
メンバーオペレーターとして、または非会員(無料)オペレーターとして実装された可能性があります。
私の推測では、C ++が定義されている間にレトロ互換性の問題が発生したためです。 operator<<(int)
, 、したがって、彼らはそれを無料のオペレーターとして移動しないことに決めました。
C ++標準ライブラリ(およびSTL)には、このような多くの不均一性があります。
所属していません StackOverflow