gpt4 book ai didi

c++ - `List x;` 和 `List x()` 有区别吗

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:11 31 4
gpt4 key购买 nike

标题来自名站C++ FAQ作者:编码(marshal)·克莱恩。

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

Suppose that List is the name of some class. Then function f() declares a local List object called x:

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

But function g() declares a function called x() that returns a List:

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

但是使用第二种变体真的是错误的吗?

如果它真的是声明,编译器不会提示你不能在函数内声明函数吗?

最佳答案

And if it really is a declaration wouldn't the compiler complain that you cannot declare a function within a function.

当然不是。因为您可以用一个函数声明一个函数。

这被称为最烦人的解析,并且有据可查。事实上,它会代表编译器处理错误

List x();

作为变量声明。

But is it really wrong to use the second variant?

如果你想要一个变量,那么是的。如果你想声明一个函数……是的。您可以,但通常您会在函数范围之外执行此操作。

关于c++ - `List x;` 和 `List x()` 有区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12297021/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com