有没有列出X'之间的任何差别;`和`列表X()`(Is there any differen

2019-06-27 21:20发布

标题来自著名网站C ++ FAQ马歇尔克莱因。

作者声称,存在以下两个代码示例之间的差。

假设List是某个类的名称。 然后,函数f()声明名为x本地列表对象:

void f()
{
    List x;     // Local object named x (of class List)
    ...
}

但是函数g()中声明了一个名为X()函数返回一个列表:

void g()
{
    List x();   // Function named x (that returns a List)
    ...
}

这是真的错用第二方案?

如果它真的是一个声明不会编译器抱怨你不能在函数内声明的功能?

Answer 1:

如果它真的是一个声明不会编译器抱怨,你不能在函数内声明的函数。

当然不是。 因为你可以声明函数withing的功能。

这就是所谓的最棘手的解析 ,它的有据可查的。 事实上,这将是代表编译器把一个错误

List x();

作为一个变量声明。

这是真的错用第二方案?

如果你想要一个变量,那么是的。 如果要声明一个函数......还挺不错。 你可以,但通常你会做它的功能范围之外。



文章来源: Is there any difference between `List x;` and `List x()`