std::function과function::bind의 용법 이해
1239 단어 cpp
아니면 코코즈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;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MinGW-W64용 Windows에서 복잡한(실제로는 아님) Boost 컴파일.C++를 사용하는 경우 매우 유용한 수많은 라이브러리를 생성하는 커뮤니티 기반 프로그램인 Boost를 우연히 발견했을 것입니다. 그 중 일부는 C++17부터 포함된 파일 시스템 라이브러리와 같이 C++에 추가되었습니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.