std :: string s()奇怪的行为

时间:2013-05-28 10:17:52

标签: c++ string

我发现了一些我不明白的事情。

std::string a();

打印出来后,返回1。我不知道它来自哪里。我认为a()是一个没有参数的构造函数,但看起来它不是。

我在哪里可以找到有关此信息?这是什么?

当试图做std::string b(a);编译器喊叫时:

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

将不胜感激。

2 个答案:

答案 0 :(得分:5)

这是一个函数声明,而不是字符串实例化:

std::string a();

它声明了一个名为a的函数,没有参数,并返回std:string。这些是实例化:

std::string a;   // C++03 and C++11
std::string b{}; // C++11 syntax

答案 1 :(得分:3)

std::string a();

声明一个没有参数的函数,std::string作为返回类型。当您尝试打印时,打印地址,评估为true

  

警告:'std :: string a()'的地址将始终评估为'true'[-Waddress]