繁体   English   中英

List x;和List x()之间有什么区别吗

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM