您好,登錄后才能下訂單哦!
本篇內容介紹了“如何使用外部閉包”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
添加外(閉包)作為鏈接類型,以創建與閉包ABI兼容的函數,
將UFCS調用的地址傳遞給外(閉包)函數將創建一個閉包
成員函數可以隱式轉換為外(閉包)函數
建議外(閉包)添加為鏈接類型,即
外(閉包)空 bar(Foo foo);//可轉成閉包
這種鏈接類型通過使第一個參數按與將上下文指針傳遞給閉包函數相同方式傳遞,來修改函數ABI.如果外(閉包)函數的第一個參數是類或構引用,則它就像具有該類型的成員函數(ABI相同).以下示例中的每個函數都具相同ABI:
類 一類
{
空 成員函數(int x,float y)
{
}
}
外(閉包)空 非成員函數(一類 s,int x,float y)
{
}
構 一構
{
空 成員函數(int x,float y)
{
}
}
外(閉包)空 非成員函數(ref 一構 s,int x,float y)
{
}
外(閉包)空 非成員函數(一構 * s,int x,float y)
{
}
用UFCS可從外(閉包)函數中提取閉包,即
外(閉包)空 bar(Foo foo)
{
// ...
}
Foo foo;
空 閉包()dg =&foo.bar;
//使用UFCS來獲得上下文指針設置為foo的"空 閉包()"
用UFCS提取閉包,對外(閉包)函數和成員函數語法一樣,即&<對象>.<函數>.
這樣,模板和插件都可使用他們.
它還通過"稍后確認"的UFCS調用檢查類型來保持上下文指針和函數的第一個參數間的類型安全.
為了完整,成員函數應隱式轉換為外(閉包)函數,即
構 Foo構
{
空 bar()//...
}
類 Foo類
{
空 bar()//...
}
構 Foo構 foo構;
構 Foo類 foo類;
外(閉包)函數(ref Foo構 foo)fp1=&foo構.bar;
外(閉包)函數(Foo類 foo)fp2=&foo類.bar;
“如何使用外部閉包”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。