5

私は理解できない奇妙なものを見つけました。

std::string a();

プリントアウトすると、 が返されます1。どこから来たのかわかりません。a()引数なしのコンストラクタだと思っていたのですが、そうではないようです。

これに関する情報はどこにありますか? これは何ですか?

std::string b(a);そして、コンパイラの叫びをやろうとすると:

error: no matching function for call to ‘std::basic_string<char>::basic_string(std::string (&)())’

説明をいただければ幸いです。

4

2 に答える 2

5

これは関数宣言であり、文字列のインスタンス化ではありません:

std::string a();

パラメータなしでという関数を宣言しa、 を返しますstd:string。これらはインスタンス化です:

std::string a;   // C++03 and C++11
std::string b{}; // C++11 syntax
于 2013-05-28T10:19:02.820 に答える
3
std::string a();

std::string引数なしで戻り値の型として関数を宣言します。印刷しようとすると、 と評価される住所を印刷しますtrue

警告: 'std::string a()' のアドレスは常に 'true' として評価されます [-Waddress]

于 2013-05-28T10:19:37.140 に答える