0

可能重复:
使用空括号调用默认构造函数时出错
Test t; 之间有什么区别?和测试 t();? 如果测试是一个类

这段代码第一个编译第二个没有什么区别。我对 C++ 很陌生。

第一个样本

list<string> str;
list<string>::iterator it;

it = str.begin();

第二个样本

list<string> str();
list<string>::iterator it;

it = str.begin();

我认为没有 parantethiss 的调用调用默认构造函数女巫与 () 变体相同。

4

2 回答 2

2
list<string> str;

声明一个变量。

list<string> str();

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

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

于 2012-10-10T12:03:08.133 回答
2

list<string> str();被视为函数原型声明。请参阅“最令人烦恼的解析”

于 2012-10-10T12:03:21.447 回答