1
std::ostream & _return  = ::operator<<(_os, _event)

特に知りたいのは、データ型とは何か_return、コンソールに出力するにはどうすればよいかです。

4

2 に答える 2

2

std::ostream & _return = ::operator<<(_os, _event);

特に知りたいのは、_return のデータ型とは何か、コンソールに出力するにはどうすればよいかということです。

このコードは、およびオブジェクトをパラメーターとしてoperator<<受け入れることができるグローバル スコープ (名前空間ではなく) を探します。必ずしも正しいとは限りませんが、"<<" が C++ でストリーミング出力が行われる通常の方法であることを考えると、おそらく次のような関数になると予想できます。_os_event

std::ostream& operator<<(std::ostream&, const Event&);

ここで、 Event はオブジェクトの型であり、から派生した型であり、結果として への参照によって処理できると_event仮定しました。_os std::ostreamstd::ostream

ほとんどすべてのそのようなoperator<<関数は最初のストリーム引数を返すため、コードはおそらく何らかの出力を行ってから_return、あたかも次のように効果的に割り当てます。

std::ostream& _return = _os;

ここで、それ自体の静的型は(標準出力ストリーム) オブジェクトへの参照ですが、実行時の型は型が持つものになります... それは、操作がポリモーフィックに呼び出すオブジェクトの型です。これは、または他の多くのタイプである可能性があります。_returnstd::ostream&std::ostream_os_returnofstreamostringstream

コンソールで印刷するにはどうすればよいですか。

C++ でテキスト型名を取得する標準的な方法はありませんが、ランタイム ポリモーフィック型には、完全な名前空間修飾子、名前マングリング、または何も指定されていませんが、簡単に試すことができます:

std::cout << typeid(_return).name() << '\n';

(GCCの場合、そのような型名のマングルを解除するためのヒントについては、std::type_info::name の結果のマングル解除を参照してください)

于 2013-06-27T05:56:59.457 に答える
0

_returnstd::ostream「クラスオブジェクトへの参照」タイプの単なる変数です。<<そして、グローバル名前空間の operator の戻り値で初期化されます::operator<<(ostream& os, const some_Obj_reference& ref)

Ttisもそうかもしれません std::ostream & _return = (_os <<_event);

于 2013-06-27T05:47:12.640 に答える