为什么返回类型不是函数类型而是c ++中的函数指针?

时间:2016-08-15 03:01:05

标签: c++

int method1() {
    return 0;
}

decltype(method1) method2() {
    return method1;
}

我编译我的代码,得到一个错误:'method2'声明为函数返回一个函数, 然后我将返回类型更改为函数指针,它可以工作,我只想知道为什么会这样。

decltype(method1) *method2() {
    return method1;
}

2 个答案:

答案 0 :(得分:7)

在C ++中,无法返回函数和数组。这就是语言的设计方式。

您必须返回指针或引用它们。你已经尝试过指针,它有效。返回引用的以下内容也应该有效:

decltype(method1)& method2() {
   return method1;  
}

答案 1 :(得分:1)

您希望编译器在返回"函数"时返回什么代码?您想要返回机器代码吗?

编译器无法做到这一点。此外,由于您可能不想要自我修改代码,因此您并不需要代码的副本。相反,可以返回函数的地址。