문제

C ++의 대의원이 C/C ++의 정렬 함수는 마지막 매개 변수가 대의원의 형태이기 때문에 C/C ++의 정렬 함수는 무엇입니까?

도움이 되었습니까?

해결책

"Delegate"는 실제로 C ++ 용어의 일부가 아닙니다. C#에서는 객체의 주소를 저장하고 멤버 기능을 호출 할 수있는 영광스러운 기능 포인터와 같은 것입니다. C ++에서 작은 라이브러리 기능으로 이와 같은 것을 확실히 쓸 수 있습니다. 또는 더 일반적인 : 결합 boost::bind<> ~와 함께 boost::function<>.

C ++에서는 "기능 객체"라는 용어를 사용합니다. 함수 객체는 함수 콜 오퍼레이터 ()를 통해 "호출 가능"인 (함수 포인터 포함)입니다.

STD :: SORT는 인수를 수정하지 않고 부울 값을 반환하는 특수 함수 객체 인 "술어"를 취합니다.

다른 팁

C ++의 콜백 함수는 (느슨하게)의 형태라고합니다. delegates ( 그렇지만 delegate 이 용어는 이것에 사용되지 않습니다). 콜백 함수는 포인터를 사용하여 함수를 사용하여 다른 함수로 매개 변수로 전달합니다. 그러나 C#의 대표단은 C ++의 콜백 함수에 비해 더욱 발전됩니다.

작업을 위임한다는 것은 작업 부하를 다른 사람과 공유하는 것을 의미합니다. 실생활에서, 당신이 당신의 과제를 위임한다면, 즉, 당신이 관리자라면, 당신은 당신의 작업을 공유하는 것이 당신의 작업을 공유 할 것입니다.

이 개념은 C ++와 대의원의 기능을 갖는 다른 언어에서 동일합니다. C에서는 이것을 대의원으로 볼 수 있습니다.

int calculate(int (*func)(int c), int a, int b)

당신은 포인터를 보낼 것으로 예상되기 때문에, 당신을 위해 어떤 작품을 계산할 다른 기능으로. 나는 최근에 a 블로그 게시물 Python과 C의 기능 포인터에서 확인하면 도움이 될 수 있습니다. 이것은 C 또는 C ++에서 작업을 위임하는 "전통적인"방법이 아닐 수도 있지만, 다시 한 번 Termonoligy는 내가 조금 옳다고 말합니다.

대표단 주로 클래스에 포함 된 함수 (PIMPL, 집계, 개인 상속)에 함수를 전달하는 방법으로 주로 사용됩니다. 그것들은 주로 멤버 클래스의 함수를 호출하는 한 줄의 (인화 된) 기능입니다. 내가 아는 한, 그것은 C#의 대표와 관련이 없습니다.

이런 의미에서 QSORT에 사용되는 함수 포인터는 대의원이 아니지만 Framework 모듈이 할리우드 원리.

대리자: 가입 시스템이있는 다기능 포인터처럼 작용하는 객체. 콜백 알림 및 이벤트 처리에 정적 또는 '개체'멤버 함수 포인터의 사용을 단순화합니다.

이것 Link는 명쾌한 방식으로 대의원을 설명하거나 귀하는 또한 MSDN 링크.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top