220825)함수 포인터, Lambda 함수, thiscall
함수 포인터 함수의 주소를 가리킬 수 있는 포인터 변수. [ (반환값 자료형) (*포인터명) (매개변수 자료형...) ]의 꼴로 선언할 수 있다. 선언한 포인터의 반환값 과 매개변수 와 같은 자료형 을 가진 함수를 저장할 수 있다. (예시) 함수 포인터 선언: float (*fp)(int, int); 저장할 수 있는 함수: float Func(int a, int b); 함수를 포인터에 저장: fp = Func; 함수 포인터를 통한 호출: fp(3, 5); C++ 11부터는 using을 사용하면 특정 함수 포인터에 대한 별칭을 만들 수 있다. using funcPt = float(*)(int, int); 또한 C++ 11부터 표준 라이브러리 <functional> 헤더를 통해 std::function 을 사용한 함수 포인터의 정의가 가능하다. ---- #include <functional> std::function<float(int, int)> funcPt; funcPt = Func; // float Func(int a, int b)꼴로 선언된 함수; funcPt(3, 5); ---- Lambda 함수 익명의 함수를 정의할 수 있는 방법. 함수가 호출되거나 인수로 사용되는 위치에서 즉석으로 함수를 정의하여 캡슐화하는 데에 사용된다. 람다식은 다음과 같이 정의한다. --- [캡쳐 블록]( 매개변수 목록 ) mutable throw() -> 반환자료형 { 함수 내용 } ※ 기울임체는 생략가능한 코드 --- 자세한 참조: https://jungwoong.tistory.com/51 함수 호출 규약 - thiscall 함수의 호출 규약은 함수 호출 시 전달된 매개변수를 함수가 종료될 때 정리하는 방법으로서 cdecl, stdcall, fastcall, thiscall 4가지가 존재한다. 이 중 thiscall 은 C++언어의 멤버함수에서 쓰이고 나머지는 C언어에서 사용된다. thiscall은 ecx에 인스턴스의 주...