3

我看到了这段代码,但我无法理解它的含义。我知道我们如何使用默认构造函数,但这不是默认构造函数。这是什么?

class X
{
        ...
};

int main()
{
     X f();
}
4

4 回答 4

8

它声明了一个f不带参数并返回类型的函数X
这也被称为C++ 中最令人烦恼的解析。它是 C++ 标准定义声明的解释规则方式的副产品。

于 2013-03-27T07:00:52.320 回答
3

假设您声明了一个函数:

int Random();

并使用它:

int main()
{
   int n;
   n = Random();
}

但是在 之后实现 Random 函数main。或者假设该Random函数是在某个标头中定义的。您需要指示编译器Random是在某个其他源文件或某个库中实现的函数。

因此,像这样的表达式:

T foo();

总是意味着对编译器的指示有一个名为foo返回的函数T。它不能是类型的对象T

于 2013-03-27T07:06:00.690 回答
2

它的函数名声明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;
}
于 2013-03-27T07:01:17.060 回答
1

这是一个不带任何参数并返回 X 类对象的函数

于 2013-03-27T07:03:23.053 回答