X f()是什么意思?

时间:2013-03-27 06:59:06

标签: c++

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

class X
{
        ...
};

int main()
{
     X f();
}

4 个答案:

答案 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对象的函数