C++lambda捕获模式与右值引用的使用-创新互联

lambda 表达式和右值引用是 C++11 的两个非常有用的特性。

成都做网站、网站制作的关注点不是能为您做些什么网站,而是怎么做网站,有没有做好网站,给创新互联一个展示的机会来证明自己,这并不会花费您太多时间,或许会给您带来新的灵感和惊喜。面向用户友好,注重用户体验,一切以用户为中心。

lambda 表达式实际上会由编译器创建一个 std::function对象,以值的方式捕获的变量则会由编译器复制一份,在 std::function 对象中创建一个对应的类型相同的 const 成员变量,如下面的这段代码:

int main(){
 std::string str = "test";
 printf("String address %p in main, str %s\n", &str, str.c_str());
 auto funca = [str]() {
 printf("String address %p (main lambda), str %s\n", &str, str.c_str());
 };

 std::function funcb = funca;
 std::function funcc;
 funcc = funca;

 printf("funca\n");
 funca();

 std::function funcd = std::move(funca);
 printf("funca\n");
 funca();

 printf("funcb\n");
 funcb();

 std::function funce;
 funce = std::move(funcb);

 printf("funcb\n");
// funcb();

 printf("funcc\n");
 funcc();

 printf("funcd\n");
 funcd();

 printf("funce\n");
 funce();

// std::function funcf = funce;

 return 0;
}

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文题目:C++lambda捕获模式与右值引用的使用-创新互联
分享URL:http://scjbc.cn/article/ichjp.html

其他资讯