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