为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
慕哥9229398 2019-07-26 11:46:01
我们可以在C ++中的函数内部使用函数吗?我的意思是:int main() {  void a()   {      // code  }  a();  return 0;}
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

对于所有意图和目的,C ++通过lambdas支持:1

int main() {
    auto f = []() { return 42; };
    std::cout << "f() = " << f() << std::endl;}

这里f是一个lambda对象,它充当了一个本地函数main。可以指定Captures以允许函数访问本地对象。

在幕后,f是一个功能对象(即提供的类型的对象operator())。函数对象类型由编译器基于lambda创建。


1,自C ++ 11以来


查看完整回答
反对 回复 2019-07-26
?
ibeautiful

TA贡献1993条经验 获得超5个赞

已经提到了本地类,但是这里有一种方法可以让它们更像本地函数,使用operator()重载和匿名类:

int main() {
    struct {
        unsigned int operator() (unsigned int val) const {
            return val<=1 ? 1 : val*(*this)(val-1);
        }
    } fac;

    std::cout << fac(5) << '\n';}

我不建议使用它,这只是一个有趣的技巧(可以做,但imho不应该)。


2014年更新:

随着C ++ 11的兴起,您现在可以拥有本地函数,其语法有点像JavaScript的回忆:

auto fac = [] (unsigned int val) {
    return val*42;};


查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 572 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信