list <string> test()和list <string> test difference?</string> </string>

时间:2012-10-10 12:01:58

标签: c++

  

可能重复:
  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调用默认构造函数的调用与()变体相同。

2 个答案:

答案 0 :(得分:2)

list<string> str;

声明一个变量。

list<string> str();

声明一个不带参数的函数并返回list<string>

这通常被称为烦恼的解析。

答案 1 :(得分:2)

list<string> str();被视为函数原型声明。请参阅"Most Vexing Parse"