函数指针和 lambda 表达式都是 c++++ 中封装代码块的技术,各有不同。函数指针是指向函数内存地址的常量指针,而 lambda 表达式是匿名函数,语法更灵活,可捕获外部变量。函数指针适合类型安全和低开销的场景,lambda 表达式适合需要匿名性和捕获外部变量的场景。
C++ 函数指针与 Lambda 表达式:比较和对比
简介
在 C++ 中,函数指针和 lambda 表达式都是用于封装代码块的技术,但在语法和使用方式上有所不同。
函数指针
函数指针是一种指向函数内存地址的常量指针。它允许将函数作为参数传递或存储在数据结构中。
Lambda 表达式
Lambda 表达式是一种匿名函数,使用特殊的语法定义。它们通常用于创建可以作为回调或过滤器传递的小型代码块。
比较
特征 | 函数指针 | Lambda 表达式 |
---|---|---|
语法 | int (*func)(int) |
[](int x) { return x * x; } |
匿名性 | 非匿名 | 匿名 |
捕获性 | 不能捕获外部变量 | 可以捕获外部变量 |
类型安全性 | 类型安全 | 类型安全性弱 |
实战案例
函数指针作为参数:
- void sort(int arr[], int size, int (*comp)(int, int)) {
- // 使用函数指针作为比较函数进行排序
- ...
- }
- int compareAsc(int a, int b) {
- return a - b;
- }
- int main() {
- int arr[] = {5, 2, 8, 3, 1};
- sort(arr, 5, compareAsc);
- ...
- }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。