Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 以下声明之间有什么区别? vector(); 矢量工资;_C++_Vector - Fatal编程技术网

C++ 以下声明之间有什么区别? vector(); 矢量工资;

C++ 以下声明之间有什么区别? vector(); 矢量工资;,c++,vector,C++,Vector,我想声明一个空向量,上面两个声明都是可能的,因为编译器没有返回任何错误。上述两个声明之间有什么区别?更新后,您显示的两个声明是: 向量();//名为salaries的函数,该函数不带参数并返回向量 矢量工资;//具有默认构造的向量类型的变量 注意,(1)有时是为了做与(2)相同的事情而编写的(即使用默认构造函数)。但编译器并不是这么看的——这通常被称为“最麻烦的解析”,您只需稍加搜索就可以找到更多相关信息。基本上,这是语言语法中的一种(有意的)歧义,这是由语言规范解决的,要求特定语法被当作一个函

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

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

  • 向量();//名为salaries的函数,该函数不带参数并返回向量
  • 矢量工资;//具有默认构造的向量类型的变量

  • 注意,(1)有时是为了做与(2)相同的事情而编写的(即使用默认构造函数)。但编译器并不是这么看的——这通常被称为“最麻烦的解析”,您只需稍加搜索就可以找到更多相关信息。基本上,这是语言语法中的一种(有意的)歧义,这是由语言规范解决的,要求特定语法被当作一个函数,但仍然让很多人感到惊讶。

    如果这是C或C++,那么这些声明都不是声明。(第一个是函数调用,第二个是没有副作用的表达式语句(可能会被视为死代码并被优化器消除)。也许您需要更好地解释您的问题。谢谢,这非常有用
    vector<double> salaries();
    vector<double> salaries;