在C++中,unary_function
和binary_function
是两个模板基类,它们主要用于为函数对象提供默认的函数调用操作。这些基类在C++11中已经被标记为弃用,因为它们已经不再被标准库使用。在C++11及以后的版本中,你可以使用std::function
来实现类似的功能。
unary_function
是一个一元函数的基类,它定义了一个类型别名argument_type
和result_type
,分别表示函数对象的输入参数类型和返回值类型。在派生类中,你需要提供这些类型别名的实现。例如:
#include<iostream>
#include<functional>
class Square : public std::unary_function<int, int> {
public:
int operator()(int x) const {
return x * x;
}
};
int main() {
Square square;
std::cout<< square(5)<< std::endl; // 输出 25
return 0;
}
binary_function
是一个二元函数的基类,它定义了类型别名first_argument_type
、second_argument_type
和result_type
,分别表示函数对象的两个输入参数类型和返回值类型。在派生类中,你需要提供这些类型别名的实现。例如:
#include<iostream>
#include<functional>
class Add : public std::binary_function<int, int, int> {
public:
int operator()(int x, int y) const {
return x + y;
}
};
int main() {
Add add;
std::cout<< add(3, 4)<< std::endl; // 输出 7
return 0;
}
总之,unary_function
和binary_function
主要用于简化函数对象的定义,并提供默认的函数调用操作。在现代C++中,你可以使用std::function
来实现类似的功能。
领取专属 10元无门槛券
手把手带您无忧上云