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();

Declares a function with no arguments and std::string as return type. When you trying to print it, you print address, which is evaluating to true.

warning: the address of ‘std::string a()’ will always evaluate as ‘true’ [-Waddress]

于 2013-05-28T10:19:37.140 回答