亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們可以在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??梢灾付–aptures以允許函數訪問本地對象。

在幕后,f是一個功能對象(即提供的類型的對象operator())。函數對象類型由編譯器基于lambda創建。


1,自C ++ 11以來


查看完整回答
反對 回復 2019-07-26
?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

已經提到了本地類,但是這里有一種方法可以讓它們更像本地函數,使用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 關注
  • 606 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號