C++中的std::bind
函数用于生成可调用对象的实例,它接受一个函数(或者可调用对象)以及一系列参数,并返回一个新的可调用对象。std::bind
的绑定时机是在创建绑定对象时发生的。
当使用std::bind
创建绑定对象时,它会立即将所有提供的参数绑定到目标函数或可调用对象上。这意味着在绑定对象被调用时,这些已绑定的参数将自动传递给目标函数或可调用对象。
以下是一个简单的示例,说明了std::bind
的绑定时机:
#include <iostream>
#include <functional>
void print_sum(int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
}
int main() {
// 创建一个绑定对象,将参数2和3绑定到print_sum函数上
auto bound_print_sum = std::bind(print_sum, 2, 3);
// 调用绑定对象,传递剩余的参数
bound_print_sum(4); // 输出 "Sum: 9"
return 0;
}
在这个示例中,当创建bound_print_sum
对象时,参数2和3已经绑定到print_sum
函数上。因此,在调用bound_print_sum(4)
时,不需要再传递参数2和3,因为它们已经在绑定对象中预先绑定了。