以下声明之间有什么区别?

时间:2013-11-08 15:41:33

标签: c++ vector

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

我想声明一个空向量,并且上面两个声明是可能的,因为编译器没有返回任何错误。上述两个声明之间有什么区别?

1 个答案:

答案 0 :(得分:1)

通过更新,您显示的两个声明是:

  1. 矢量&lt;双&GT;薪金(); //函数名为salaries,不带任何参数并返回向量&lt; double&gt;
  2. 矢量&lt;双&GT;薪金所得; //类型为vector&lt; double&gt;的变量这是默认构造的
  3. 注意,(1)有时是为了与(2)做同样的事情而编写的(即使用默认的构造函数)。但这不是编译器看到它的方式 - 这通常被称为“最令人烦恼的解析”,你应该能够通过一点点搜索找到更多的信息。但是,基本上,它是语言语法中的(有意)模糊性,通过要求将特定语法视为一个函数来解决语言规范,但仍然让很多人感到惊讶。