C++11 Function 使用场景

【1】场景分析

在一个函数内部,可能会多次用到某一段代码,一般情况是把这段用到次数较多的代码封装成一个函数。

但是,如果这段代码仅仅只在这个函数中有使用,这时封装成函数显得既麻烦又冗赘。

那么,有没有办法生成一个“临时的函数”,且“临时的函数”生命周期仅在这个函数当中?C++11中可以使用function配合lambda表达式来实现。

【2】代码示例

简单示例如下:

复制代码
 1 #include <iostream>
 2 #include <functional>
 3 
 4 class A
 5 {
 6 public:
 7     void funcOld(int x, int y)
 8     {
 9         // -----code section
10         auto s1 = x + y;
11         // -----code section
12         auto s2 = x + y;
13         // -----code section
14         auto s3 = x + y;
15 
16         std::cout << "sum :: " << s1 + s2 + s3 << std::endl;
17     }
18 
19     void func(int x, int y)
20     {
21         auto func1 = [this](int x, int y)
22         {
23             return x + y;
24         };
25 
26         auto s1 = func1(x, y);
27 
28         auto s2 = func1(x, y);
29 
30         auto s3 = func1(x, y);
31 
32         std::cout << "sum :: " << s1 + s2 + s3 << std::endl;
33     }
34 };
35 
36 void main(int argc, char *argv[])
37 {
38     for (auto c : { "hello world !!!" }) // c++17 for
39     {
40         std::cout << c;
41     }
42 
43     std::cout << std::endl;
44     A a;
45     a.func(2, 3);
46 
47     system("pause");
48 }
49 
50 // run out:
51 /*
52 hello world !!!
53 sum :: 15
54 请按任意键继续. . .
55 */
复制代码

 

Good Good Study, Day Day Up.

顺序 选择 循环 总结

posted @   kaizenly  阅读(961)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
打赏

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示