这个问题听起来有点奇怪,但请检查代码示例
#include <iostream>
using namespace std;
int main() {
string a, b(), c("test");
// No problems
a = c;
// tester.cpp:9:7: error: assignment of function ‘std::string b()’
b = c;
// tester.cpp:10:7: error: invalid conversion from ‘std::string (*)() {aka std::basic_string<char> (*)()}’ to ‘char’
a = b;
// No problems
c = a;
}
你可以看到它看起来像是用默认构造函数创建的,但事实上并非如此。所以我的问题是,string b()
是什么意思?
答案 0 :(得分:1)
将您的代码压缩到string b();
,您在此处所做的是将函数的原型声明为b
,返回string
并取消参数。
“复合声明”中的逗号混淆了这一点。
答案 1 :(得分:1)
它实际上是一个函数声明。可以声明本地函数,但不能定义它们。因此,显式调用默认构造函数是不可能的。
答案 2 :(得分:1)
经典错误,但错误消息已经说明了:function std::string b()
/.