c++ - std::string s() 奇怪的行为

标签 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 (&)())’

解释将不胜感激。

最佳答案

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

std::string a();

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

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

关于c++ - std::string s() 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16789524/

相关文章:

c++ - 用模数环绕网格

c++ - xxx.h : fatal error C1083: Cannot open include file: 'yyyy.h' : No such file or directory

c++ - 变量初始化无法使用逗号运算符编译

java - 如何使用java将漂亮格式的json文件转换为简单的单行json文件?

将 int 转换为字节数组时的 C++ 字节顺序

C++:识别对象的类型

Javascript 以 160 个字符拆分字符串并添加计数器?

python - 字符串中数字的总和

c# - 使用 contains 进行不区分大小写的字符串搜索

c++ - Global const string& 对我来说很难闻,它真的安全吗?