可能的重复项:
使用空括号
集调用默认构造函数时出错 测试 t 有什么区别;和测试 t();?如果测试是一个类
第一个编译的这段代码和第二个不编译的代码有什么区别。我对C++很陌生。
第一个样本
list<string> str;
list<string>::iterator it;
it = str.begin();
第二个样本
list<string> str();
list<string>::iterator it;
it = str.begin();
我认为在没有parantethiss调用默认构造函数女巫的情况下调用与()变体相同。
list<string> str;
声明一个变量。
list<string> str();
声明一个不带参数并返回list<string>
的函数。
这通常称为烦人的解析。
list<string> str();
被视为函数原型声明。请参阅"最令人烦恼的解析"。