std::function과function::bind의 용법 이해

1239 단어 cpp
나이가 들수록 새로운 것을 받아들이는 것을 좋아하지 않는다. 예를 들어 c++11
아니면 코코즈2dx 3.몇 개의 엔진이 c++11의 특성을 사용하고 있는데, 아마도 나는 영원히 보지 못할 것이다.
이 글은 std::function과 std::bind가 비교적 명확하고 다음과 같이 옮겨 적습니다.
조금 주의해야 할 것은 구성원의 비정적 함수에 2개의 매개 변수가 있을 때 std::bind의 매개 변수에 std::placeholders_로 써야 한다는 것이다1,std::placeholders_이
이렇게 유추하다.
function 템플릿 클래스와bind 템플릿 함수를 사용하면 유사한 함수 바늘의 기능을 실현할 수 있지만 함수 바늘보다 더욱 유연하다. 특히 함수 지향 클래스의 비정적 구성원 함수를 사용할 때.
std::function은 전역 함수/클래스 정적 구성원 함수에 연결할 수 있습니다. (클래스 정적 구성원 함수는 전역 함수와 다름없습니다.) 클래스의 비정적 구성원 함수에 연결할 경우 std::bind를 사용해야 합니다.
#include 
#include 
using namespace std;

typedef std::function fp;
void g_fun()
{
	cout< fpi;
		//  std::placeholders::_1
		fpi f=std::bind(&A::A_fun_int,this,std::placeholders::_1);
		f(5);
	}
};
int main()
{
	// 
	fp f2=fp(&g_fun);
	f2();

	// 
	fp f1=fp(&A::A_fun_static);
	f1();

	A().init();
	A().init2();
	return 0;
}

동시에, std::bind가 허함수에 귀속될 때 다태적 행동을 나타냅니다.
#include 
#include 
using namespace std;

typedef std::function fp;

class A
{
public:
	virtual void f()
	{
		cout<init();

	return 0;
}

좋은 웹페이지 즐겨찾기