0
vector<double> salaries();
vector<double> salaries;

我想声明一个空向量,以上两个声明是可能的,因为编译器没有返回错误。以上两个声明有什么区别?

4

1 回答 1

1

随着更新,您显示的两个声明是:

  1. 矢量<双>工资();// 函数名称为salary,不带参数并返回一个向量<double>
  2. 矢量<double> 工资;// 类型为 vector<double> 的变量,默认构造

请注意,有时编写 (1) 的目的是为了与 (2) 做同样的事情(即使用默认构造函数)。但这不是编译器所看到的 - 这通常被称为“最令人烦恼的解析”,您应该能够通过一些搜索找到更多信息。但是,基本上,这是语言语法中的(故意)歧义,语言规范通过要求将特定语法视为函数来解决,但仍然让很多人感到惊讶。

于 2013-11-08T16:06:08.960 回答