0

私はいくつかの C++ を学んでいて、文字列と整数からの変換について学ぶ部分にたどり着きました。私はコードを見ていました、そしてそれは次のようなことを言いました:

istringstream converter(stringVariable);

「converter」が変数名の場合、その後に () を使用するのはなぜですか?

4

3 に答える 3

6

括弧は、istringstreamコンストラクタへの引数を囲みます。

istringstream converter(stringVariable);
//                            ^^ variable being passed as argument to the
//                               istringstream constructor

この初期化構文は、パラメーターを持つコンストラクターを持つすべての型に適用されます。これは標準の C++ オブジェクト初期化構文の 1 つですが、注意してください: 特定の状況下では、最も厄介な parseとして知られている方法で、同様の構造が関数宣言として解析される可能性があります。したがって、この

istringstream mystream();

std::istringstreamパラメーターを受け入れないコンストラクターがあっても、関数として解析されます。

于 2013-06-09T22:48:04.770 に答える
2

istringstreamインスタンスのコンストラクターを呼び出す方法だからです。

于 2013-06-09T22:48:09.090 に答える
1

現在のバージョンの C++ (C++11) では、次のように記述した方がよいことに注意してください。

istringstream converter{stringVariable};

これは「均一な初期化」構文と呼ばれ、括弧を使用したものとほぼ同じように機能しますが、関数宣言と間違われることはありません (「最も厄介な解析」はありません)。

于 2013-06-09T23:45:00.347 に答える