我们可以在C ++中的函数内部使用函数吗?

我们可以在C ++中的函数内部使用函数吗?

我的意思是:


int main() 

{

  void a() 

  {

      // code

  }

  a();


  return 0;

}


慕哥9229398
浏览 573回答 3
3回答

一只名叫tom的猫

对于所有意图和目的,C ++通过lambdas支持:1int&nbsp;main()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;auto&nbsp;f&nbsp;=&nbsp;[]()&nbsp;{&nbsp;return&nbsp;42;&nbsp;}; &nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;<<&nbsp;"f()&nbsp;=&nbsp;"&nbsp;<<&nbsp;f()&nbsp;<<&nbsp;std::endl;}这里f是一个lambda对象,它充当了一个本地函数main。可以指定Captures以允许函数访问本地对象。在幕后,f是一个功能对象(即提供的类型的对象operator())。函数对象类型由编译器基于lambda创建。1,自C ++ 11以来

ibeautiful

已经提到了本地类,但是这里有一种方法可以让它们更像本地函数,使用operator()重载和匿名类:int&nbsp;main()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;operator()&nbsp;(unsigned&nbsp;int&nbsp;val)&nbsp;const&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;val<=1&nbsp;?&nbsp;1&nbsp;:&nbsp;val*(*this)(val-1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;fac; &nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;<<&nbsp;fac(5)&nbsp;<<&nbsp;'\n';}我不建议使用它,这只是一个有趣的技巧(可以做,但imho不应该)。2014年更新:随着C ++ 11的兴起,您现在可以拥有本地函数,其语法有点像JavaScript的回忆:auto&nbsp;fac&nbsp;=&nbsp;[]&nbsp;(unsigned&nbsp;int&nbsp;val)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;val*42;};
打开App,查看更多内容
随时随地看视频慕课网APP