我看到了这段代码,但我无法理解它的含义。我知道我们如何使用默认构造函数,但这不是默认构造函数。这是什么?
class X
{
...
};
int main()
{
X f();
}
它声明了一个f
不带参数并返回类型的函数X
。
这也被称为C++ 中最令人烦恼的解析。它是 C++ 标准定义声明的解释规则方式的副产品。
假设您声明了一个函数:
int Random();
并使用它:
int main()
{
int n;
n = Random();
}
但是在 之后实现 Random 函数main
。或者假设该Random
函数是在某个标头中定义的。您需要指示编译器Random
是在某个其他源文件或某个库中实现的函数。
因此,像这样的表达式:
T foo();
总是意味着对编译器的指示有一个名为foo
返回的函数T
。它不能是类型的对象T
。
它的函数名声明f
X f();
^ ^ function
return type
函数f()
不接受任何参数并返回一个X
类对象。
例如它的定义可以是:
class X{
int i;
// other definition
}
X f(){
X x;
// some more code
return x;
}
在 main 中,您可以像这样使用:
int main(){
X a = f();
int i = f().i;
}
这是一个不带任何参数并返回 X 类对象的函数