私は完全に基本的なC++の質問をここに持っています。上記のコードの一部でC++で演算子の連鎖はどのように起こりますか?
#include <iostream>
using namespace std;
int main() {
int a = 255;
cout << hex << a << endl; // <-----
}
、どのようstd::cout
ステートメントが連鎖していますか?
私はcout
の実装が発生する連鎖を許可するようにcout
オブジェクトへの参照を返すということを理解し、それは次のように実行する必要がありますためには、これらに
(((cout << hex) << a) << endl)
すなわち同等
cout << hex
cout << a
cout << endl
a
ニーズの何らかの形で値がhex
形式に変換するので、しかし、これは場合することはできません!
オペレータは実際に変換を実行するためにコンパイラによってどのように連鎖されていますか?
パズルの他の部分である 'ostream&operator <<(ostream&(*)(ostream&))'オーバーロードがあります。これは 'hex 'のようなマニピュレータが実際に呼び出される方法です。 – hammar
@ハマー素晴らしい観察!コメントをいただき、ありがとうございました。私はこの要点を反映する答えを編集しました。 – dasblinkenlight