Skip to content

Commit f9d37db

Browse files
FrankHBchangkun
authored andcommitted
fix: language error and comments update in lambda expression examples (changkun#45)
* Update 03-runtime.md 修复关于 lambda 表达式及其例子的几个技术性描述不完整和错误。 * Update 03-runtime.md 补充注释。
1 parent 5d22e83 commit f9d37db

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

book/zh-cn/03-runtime.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,21 +118,21 @@ add(1.1, 2.2);
118118
119119
### std::function
120120
121-
Lambda 表达式的本质是一个函数对象,当 Lambda 表达式的捕获列表为空时,Lambda 表达式还能够作为一个函数类型进行传递,例如:
121+
Lambda 表达式的本质是一个和函数对象类型相似的类类型(称为闭包类型)的对象(称为闭包对象),当 Lambda 表达式的捕获列表为空时,闭包对象还能够转换为函数指针值进行传递,例如:
122122
123123
```cpp
124124
#include <iostream>
125125
126126
using foo = void(int); // 定义函数类型, using 的使用见上一节中的别名语法
127-
void functional(foo f) {
128-
f(1); // 编译器将其隐式转化成函数指针
127+
void functional(foo f) { // 定义在参数列表中的函数类型 foo 被视为退化后的函数指针类型 foo*
128+
f(1); // 通过函数指针调用函数
129129
}
130130
131131
int main() {
132132
auto f = [](int value) {
133133
std::cout << value << std::endl;
134134
};
135-
functional(f); // 作为函数类型传递
135+
functional(f); // 传递闭包对象,隐式转换为 foo* 类型的函数指针值
136136
f(1); // lambda 表达式调用
137137
return 0;
138138
}

0 commit comments

Comments
 (0)