-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
OnClicked clicked = new OnClicked(TestDelegate) 에관해서 질문..
21.01.27 14:14 작성 조회수 169
0
c언어를 조금 배운 상태에서 강의를 듣고있습니다.
참조 형식라고 하여서 clicked 변수에 함수 주소를 받는 포인터로 대입을 해서 생각하고 있는데
new 생성자로 인스턴스를 만들면 새로 메모리를 할당해서 그 주소를 받는다고 이해해왔습니다.
그렇다면 OnClicked clicked 는 TestDelegate의 주소 (함수 원형)을 받는것이 아니라 새로 인스턴스로 생성된 TestDelegate의 복사본의 주소를 받게되는 것인가요?
제대로 질문을 했는지 모르겟군요..
답변해주시면 감사하겠습니다.
답변을 작성해보세요.
2
Rookiss
지식공유자2021.01.28
delegate, 혹은 다른 언어로 구현하는 콜백 기능들은
C로 치면 함수 포인터(혹은 함수 객체)와 유사합니다.
따라서 OnClicked 내부적으로 TestDelegate 함수의 주소를 들고 있는 것이고,
new OnClicked을 했을 때는 TestDelegate를 복사하는 것이 아니라
단지 그 함수 주소를 들고 있을 뿐입니다.
class OnClicked
{
OnClicked(TestDelegate func)
{
_func = func;
}
TestDelegate _func;
}
굳이 비유하자면 위와 같은 느낌입니다.
물론 delegate에는 훨씬 더 많은 기능이 있으니 저렇게 단순하진 않겠죠.
답변 1