Administrator
发布于 2025-08-01 / 16 阅读
0
0

Lambda 表达式和函数对象

在 C++ 中,Lambda 表达式和函数对象(Function Objects,也称为仿函数/Functors) 都是可调用对象(Callable Objects)的实现方式,用于定义可被调用的行为。

1.函数对象

通过重载 operator() 运算符的类实例,可以像函数一样被调用。

	// 定义函数对象类
	struct Adder {
	    int base;  // 状态
	    Adder(int n) : base(n) {}
	    // 重载函数调用运算符
	    int operator()(int x) const {
	        return base + x;
	    }
	};
	int main() {
	    Adder add5(5);  // 创建函数对象
	    std::cout << add5(3);  // 输出 8 (5+3)
	    Adder add10(10);
	    std::cout << add10(3); // 输出 13 (10+3)
	}

2. Lambda 表达式

基本语法:

[捕获列表](参数列表) -> 返回类型 { 函数体 }

示例:

	int base = 5;

	

	// 定义 lambda 表达式

	auto add = [base](int x) { 

	    return base + x; 

	};
	std::cout << add(3);  // 输出 8


评论