繁体   English   中英

在C ++中引用此函数

[英]Referring to this function in C++

有什么通用方法可以引用当前正在执行的函数? 例如,某些可以让我执行此操作的操作,

([] (int n) -> int {
  if (n <= 1) {
    return 1;
  }

  return n * thisFunc(n - 1);
})()

主要是,我想到的是匿名函数在不使用辅助命名函数的情况下调用自身。 所以避免这种情况

您可以使用函数指针或C ++ 11中的函数对象,但是没有内置的方法来引用函数。 例如:

std::function<int (int)> myFun = [] (int i) 
{
   if i <= 1
   {
       return 1;
   }
   return i * myFun(i-1);
}

我会辩称,递归调用lambda并不是本应使用它们的方式。 Lambda本质上旨在提供内联功能,因此非常简单。 更不用说您给出的示例可以很容易地用循环替换,从而可以更有效地实现:

int result = 1;
while (i > 1)
{
   result = result * i;
   i--;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM