[C++11] function与bind

2020-04-07  本文已影响0人  thatboy_c898

[C++11] function与bind

📑 简介

🐱 function

类模板std::function是一个通用的多态函数包装器。 std::function的实例可以存储,复制和调用任何可调用的目标,简而言之,是支持OP(...)操作的目标,如函数lambda表达式bind绑定表达式重载operator()的类对象类内数据成员等。包装器对象可以进行拷贝,并且包装器类型仅仅只依赖于其调用特征(call signature),而不依赖于可调用元素自身的类型。当std::function对象未包裹任何实际的可调用元素,调用该std::function对象将抛出std::bad_function_call异常。

Class that can wrap any kind of callable element (such as functions and function objects) into a copyable object, and whose type depends solely on its call signature (and not on the callable element type itself).

类声明

template <class T> function;     // undefined
template <class Ret, class... Args> class function<Ret(Args...)>;

成员函数

函数 作用
(constructor) 构造
(destructor) 析构
operator= 复制
assign 复制
operator bool 检查是否可调用
operator() 调用目标
target_type 目标类型
target 获得目标指针
swap 交换函数对象

🐶bind

std::bind可以根据当前已有的可调用对象,构造出一个新的可调用对象。

bind可以改变函数的参数顺序、固定参数值等。

函数声明

template <class Fn, class... Args> bind (Fn&& fn, Args&&... args);
template <class Ret, class Fn, class... Args> bind (Fn&& fn, Args&&... args);

📓 ​举例

🗒例子不全,仅供参考。(其中对于类数据成员的访问使用较少)

Tips:

placeholdersstd命名空间内针对bind函数使用的占位符命名空间,用来指定参数的位置。

上一篇下一篇

猜你喜欢

热点阅读