溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用外部閉包

發(fā)布時(shí)間:2021-10-13 11:08:37 來源:億速云 閱讀:99 作者:iii 欄目:編程語言

本篇內(nèi)容介紹了“如何使用外部閉包”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

添加外(閉包)作為鏈接類型,以創(chuàng)建與閉包ABI兼容的函數(shù),

將UFCS調(diào)用的地址傳遞給外(閉包)函數(shù)將創(chuàng)建一個(gè)閉包

成員函數(shù)可以隱式轉(zhuǎn)換為外(閉包)函數(shù)

建議外(閉包)添加為鏈接類型,即

外(閉包)空 bar(Foo foo);//可轉(zhuǎn)成閉包

這種鏈接類型通過使第一個(gè)參數(shù)按與將上下文指針傳遞給閉包函數(shù)相同方式傳遞,來修改函數(shù)ABI.如果外(閉包)函數(shù)的第一個(gè)參數(shù)是類或構(gòu)引用,則它就像具有該類型的成員函數(shù)(ABI相同).以下示例中的每個(gè)函數(shù)都具相同ABI:

類 一類
{
   空 成員函數(shù)(int x,float y)
   {
   }
}

外(閉包)空 非成員函數(shù)(一類 s,int x,float y)
{
}

構(gòu) 一構(gòu)
{
   空 成員函數(shù)(int x,float y)
   {
   }
}

外(閉包)空 非成員函數(shù)(ref 一構(gòu) s,int x,float y)
{
}

外(閉包)空 非成員函數(shù)(一構(gòu) * s,int x,float y)
{
}

用UFCS可從外(閉包)函數(shù)中提取閉包,即

外(閉包)空 bar(Foo foo)
{
   // ...
}

Foo foo;
空 閉包()dg =&foo.bar;
//使用UFCS來獲得上下文指針設(shè)置為foo的"空 閉包()"

用UFCS提取閉包,對外(閉包)函數(shù)和成員函數(shù)語法一樣,即&<對象>.<函數(shù)>.

這樣,模板和插件都可使用他們.

它還通過"稍后確認(rèn)"的UFCS調(diào)用檢查類型來保持上下文指針和函數(shù)的第一個(gè)參數(shù)間的類型安全.

為了完整,成員函數(shù)應(yīng)隱式轉(zhuǎn)換為外(閉包)函數(shù),即

構(gòu) Foo構(gòu)
{
   空 bar()//...
}

類 Foo類
{
   空 bar()//...
}

構(gòu) Foo構(gòu) foo構(gòu);
構(gòu) Foo類 foo類;

外(閉包)函數(shù)(ref Foo構(gòu) foo)fp1=&foo構(gòu).bar;

外(閉包)函數(shù)(Foo類 foo)fp2=&foo類.bar;

“如何使用外部閉包”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI