可能重复:
Error on calling default constructor with empty set of brackets
What's the differences between Test t; and Test t();? if Test is a class
这个代码之间有什么区别,第一个编译第二个没有。我是C ++的新手。
第一个样本
list<string> str;
list<string>::iterator it;
it = str.begin();
第二个样本
list<string> str();
list<string>::iterator it;
it = str.begin();
我认为没有parantethiss调用默认构造函数的调用与()变体相同。
答案 0 :(得分:2)
list<string> str;
声明一个变量。
list<string> str();
声明一个不带参数的函数并返回list<string>
。
这通常被称为烦恼的解析。
答案 1 :(得分:2)
list<string> str();
被视为函数原型声明。请参阅"Most Vexing Parse"。