'프로그래밍/C++'에 해당되는 글 1건

  1. 2017.12.08 C++ Delegate(대리자)

Delegate(이하 대리자 라고 칭함)에 대해서 인터넷에서 검색하고 이해하는데

시간이 상당히 오래걸렸다.

사실 이해를 제대로 한것은 아니며 일단 이해를 한 수준까지는 적어서 정리해보려고 한다.

정리를 하기에 앞서서 내가 처음 이해? 아니 생각했던 대리자에 대한 개념은

A, B, C 클래스가 있다면 C 클래스에서 사용하고싶은 함수가 있는데

이 함수는 A클래스가 가지고 있는것이다.

이상태에서 C클래스의 대리자에게 A클래스의 함수를 사용할수 있는 권한을 위임

C클래스에서 사용을 할수 있도록 한다 라는개념으로 생각을 했었다.

이렇게 이해한 상태에서 클래스간의 상속은 없고 별개의 클래스들에 대한 가정이었다.


물론 실제로 찾아본 내용은 생각했던것과는 다른편이었고 이해할수 있는것도

한정적인 부분이여서 저게 맞는가정인지에 대한 확신은 아직 없다 틀린지또한


서론은 이쯤에서 끝내고 사진 몇개와 짧은 설명을 통해서 정리를 해보겠다.


ActionDelegate라는 클래스를 하나 만들었다.

클래스안에는 순수가상함수인 OnAction이라는 함수가 하나만 들어있고


그밑에 대리자를 가지고 실행할 Human클래스를 만들었다.

멤버 변수로 대리자클래스 포인터가 하나있고

함수로는 대리자를지정해주는 Set함수와

대리자의 OnAction함수를 실행시킬 Action함수가 있다.


이후 Human클래스와 대리자 클래스를상속받는 Me, Friend클래스를 생성하고

각자 클래스 안에서 대리자클래스의 함수를 선언하여 내용을 기입하고

대리자 클래스포인터에는 클래스 자기자신을 지정해줬다.


Me와 Friend클래스를 선언하고 둘다 Action함수를 실행시키면


이러한 결과창이 나오게 된다.

지금당장은 너무 기본적인것만 해서 응용을 하기위해서는 좀더 공부해야할

필요성이 있고, 대리자클래스를 Me와 Friend클래스 둘다 상속받았기 때문에

서로 상반되는 결과가 나오게 대리자를 지정해줄수도 있다.


보는것처럼 Me의 대리자는 Friend로

Friend의 대리자는 Me로 지정해주었다.

이후에 이것을 실행시켜보면


이렇게 둘의 결과가 아까와는 반대로 나오게 된다.


지금까지 이해한 것은 이정도가 끝이며 앞으로 더 공부해야할거 같다.

Posted by 별수집가
,