私は誤って見つけました:
cout << cout;
出力はいくつかのアドレスです。このアドレスはどういう意味ですか、なぜ表示されますか?
私はこの質問を探しています。
ありがとう
ostreamオーバーロードoperator void*()、およびそれがへの呼び出しのクローズマッチであるため、operator <<キャストの結果(void*)coutが出力されます。あなたの場合、どちらがそのアドレスです。coutそれがオブジェクトであることを忘れないでください。
基本的に、呼び出しは次のように変換されます。
cout.operator<<((void*)cout);
coutオーバーロードされたinsertion()演算子を持つostreamオブジェクトです。クラスのコンストラクターを見ると、オブジェクトへのポインターである渡される引数があります。オブジェクトは通常、データの読み取りと書き込みに使用する文字シーケンスに関連付けられています。コンソールアプリケーションの場合、coutの場合に内部で使用される可能性のある標準出力に関連付けられたそのような文字バッファがあります。ドキュメントでは、オブジェクトを直接インスタンス化することは期待されていませんが、派生クラスのいずれかを使用するか、stdoutから注意をそらすことが期待されていると述べられています。<<ostreamstreambufstreambufostreamofstreamostringstream
印刷される住所に関しては、LuchianGrigoreが正しいと思います。
coutこの質問により、オブジェクトがインスタンス化される方法と場所についてのアイデアが得られます。オブジェクトstd::coutはどのように構築/インスタンス化されますか