本篇内容介绍了“如何使用外部闭包”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
添加外(闭包)作为链接类型,以创建与闭包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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。