C++에서 델리게이트의 의미는 무엇입니까? C/C++에서 sort 함수는 비교 함수/함수를 취합니다. 마지막 매개 변수는 대리자의 형식입니까?C++의 대리자는 무엇을 의미합니까?
답변
"위임자"는 실제로 C++ 용어의 일부는 아닙니다. C#에서는 멤버 함수를 호출 할뿐만 아니라 객체의 주소를 저장할 수있는 glorified 함수 포인터와 같은 것입니다. 작은 라이브러리 기능으로 C++에서 이와 같은 것을 작성할 수 있습니다. 또는 더 일반적인 : boost::bind<>
을 boost::function<>
과 결합하십시오.
C++에서는 "함수 개체"라는 용어를 사용합니다. 함수 객체는 함수 호출 연산자()를 통해 "호출 가능"한 모든 것 (함수 포인터 포함)입니다.
std :: sort는 인수를 수정하지 않고 부울 값을 반환하는 특수 함수 객체 인 "술어"를 사용합니다.
C++의 콜백 함수는 delegates
의 형태로 (느슨하게) 참조 될 수 있습니다 (단, delegate
이라는 용어는이 용도로 사용되지 않음). 콜백 함수는 함수 포인터를 사용하여 매개 변수로 다른 함수에 전달합니다. 그러나 C#의 대리자는 C++의 콜백 함수와 비교하여 훨씬 고급입니다.
콜백 함수는 C 개념입니다. 그것이 C++에서 사용될 수는 있지만, 펑터 (함수처럼 행동하는 객체)의 개념으로 대체되었습니다. –
작업 위임이란 작업 부하를 다른 사람들과 공유하는 것을 의미합니다. 실생활에서, 당신이 당신의 일을 위임한다면, 즉 당신이 매니저라면, 당신은 당신이 어떻게 알지 않고도 다른 사람들이 일을 끝내기를 기대하면서 당신의 일을 공유 할 것입니다.
개념은 C++ 및 대리인 기능이있는 다른 언어에서와 동일합니다. C에서 당신은 대리인으로 이것을 볼 수 있습니다 :
int calculate(int (*func)(int c), int a, int b)
당신은 당신을 위해 몇 가지 작업을 계산합니다 다른 함수에 대한 포인터를 보낼 것으로 예상되기 때문에. 나는 최근에 Python과 C로 함수 포인터에 blog post을 썼다. 이것을 확인해 보면 도움이 될 것이다. 이것은 C 또는 C++에서 작업을 위임하는 "전통적인"방법이 아닐 수도 있지만, 다시 말하자면, 나는 조금 이상하다고 말합니다.
Delegation은 기능을 클래스 (pimpl, aggregation, private inheritance)에 임베드 된 기능에 전달하는 방법으로 주로 사용됩니다. 그것들은 주로 멤버 클래스의 함수를 호출하는 한 줄의 (인라인 된) 함수입니다. 내가 아는 한, C#의 대리자와 아무 관련이 없습니다.
이 점에서 qsort에 사용 된 함수 포인터는 델리 케이트가 아니며 프레임 워크 모듈을 Hollywood principle과 같이 사용자 소프트웨어로 확장 할 수있는 콜백입니다.
제목의 오타 : "의미"여야합니다. –