[英]Is there any difference between `List x;` and `List x()`
标题来自Marshall Cline著名的网站C ++ FAQ 。
作者声称以下两个代码示例之间存在差异。
假设List是某个类的名称。 然后函数f()声明一个名为x的本地List对象:
void f()
{
List x; // Local object named x (of class List)
...
}
但是函数g()声明了一个名为x()的函数,该函数返回一个List:
void g()
{
List x(); // Function named x (that returns a List)
...
}
但是使用第二种变体真的错误吗?
如果确实是一个声明,编译器会不会抱怨您无法在函数中声明函数?
如果确实是声明,编译器也不会抱怨您无法在函数中声明函数。
当然不是。 因为您可以将函数与函数一起声明。
这被称为最令人讨厌的解析,并且有据可查。 实际上,代表编译器处理将是一个错误
List x();
作为变量声明。
但是使用第二种变体真的错误吗?
如果需要变量,则可以。 如果您想声明一个函数...可以。 您可以,但是通常您会在功能范围之外执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.