我发现了一些我不明白的事情。
std::string a();
打印出来后,返回1
。我不知道它来自哪里。我认为a()
是一个没有参数的构造函数,但看起来它不是。
我在哪里可以找到有关此信息?这是什么?
当试图做std::string b(a);
编译器喊叫时:
error: no matching function for call to ‘std::basic_string<char>::basic_string(std::string (&)())’
将不胜感激。
答案 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]