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

std::string s() strange behaviour

本文关键字:string Std      更新时间:2023-10-16

我发现了一件奇怪的事,我不明白。

std::string a();

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

我在哪里可以找到关于这个的信息?这是什么?

和当试图做std::string b(a);编译大叫:

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

请解释

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

std::string a();

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

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

声明一个不带参数的函数,返回类型为std::string。当你试图打印它的时候,你打印了地址,它的值是true

警告:' std::string a() '的地址将总是求值为' true ' [-Waddress]