0

重複の可能性:
空の括弧のセットを使用してデフォルトのコンストラクターを呼び出す際のエラー
テストtの違いは何ですか。およびテストt();?テストがクラスの場合

このコードの違いは、最初にコンパイルされ、2番目にコンパイルされないことです。私はC++にかなり慣れていません。

最初のサンプル

list<string> str;
list<string>::iterator it;

it = str.begin();

2番目のサンプル

list<string> str();
list<string>::iterator it;

it = str.begin();

parantethissを使用せずに呼び出すと、デフォルトのコンストラクターwitchが呼び出されるのは、()バリアントと同じだと思いました。

4

2 に答える 2

2
list<string> str;

変数を宣言します。

list<string> str();

パラメータを取らず、 を返す関数を宣言しますlist<string>

これは一般に厄介な解析として知られています。

于 2012-10-10T12:03:08.133 に答える
2

list<string> str();関数プロトタイプ宣言として扱われます。「最も厄介な解析」を参照してください。

于 2012-10-10T12:03:21.447 に答える