C++ 以下声明之间有什么区别? vector(); 矢量工资;
我想声明一个空向量,上面两个声明都是可能的,因为编译器没有返回任何错误。上述两个声明之间有什么区别?更新后,您显示的两个声明是:C++ 以下声明之间有什么区别? vector(); 矢量工资;,c++,vector,C++,Vector,我想声明一个空向量,上面两个声明都是可能的,因为编译器没有返回任何错误。上述两个声明之间有什么区别?更新后,您显示的两个声明是: 向量();//名为salaries的函数,该函数不带参数并返回向量 矢量工资;//具有默认构造的向量类型的变量 注意,(1)有时是为了做与(2)相同的事情而编写的(即使用默认构造函数)。但编译器并不是这么看的——这通常被称为“最麻烦的解析”,您只需稍加搜索就可以找到更多相关信息。基本上,这是语言语法中的一种(有意的)歧义,这是由语言规范解决的,要求特定语法被当作一个函
注意,(1)有时是为了做与(2)相同的事情而编写的(即使用默认构造函数)。但编译器并不是这么看的——这通常被称为“最麻烦的解析”,您只需稍加搜索就可以找到更多相关信息。基本上,这是语言语法中的一种(有意的)歧义,这是由语言规范解决的,要求特定语法被当作一个函数,但仍然让很多人感到惊讶。如果这是C或C++,那么这些声明都不是声明。(第一个是函数调用,第二个是没有副作用的表达式语句(可能会被视为死代码并被优化器消除)。也许您需要更好地解释您的问题。谢谢,这非常有用
vector<double> salaries();
vector<double> salaries;