-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
fptr1에 Something으로 접근 연산자를 붙히는 이유는 Something 클래스의 인스턴스 주소를 넘겨줘야해서 인가요?
24.01.12 02:07 작성 조회수 126
1
int (*fptr2)() = &Something::getValue;
는 단순히 정적 메모리에 있는 Something클래스의 함수 포인터를 초기화한다고 이해 할 수 있지만
제목 그대로의 의문점이 있습니다.
답변을 작성해보세요.
1
Soobak
2024.01.12
안녕하세요, 답변 도우미 Soobak 입니다.
강의 약 12:00 부분 경의 int (Something::*fptr1)() = &Something::temp;
과 int (*fptr2)() = &Something::getValue;
의 비교에 대한 질문이시군요.
말씀하신 내용이 맞습니다.fptr1
은 Something
클래스의 멤버 함수 temp
를 가리키는 포인터입니다.temp
는 정적 멤버 함수가 아니기 때문에, 호출을 위해서 Something
클래스의 인스턴스가 필요합니다.
따라서, fptr1
을 사용하여 temp
함수를 호출하려면 Something
의 인스턴스 주소와 함께 사용해야 합니다.
반면, fptr2
는 Something
클래스의 정적 멤버 함수 getValue
를 가리키는 포인터입니다.
정적 멤버 함수는 클래스의 인스턴스와 무관하게 호출될 수 있으므로, 인스턴스 주소를 필요로 하지 않습니다.
강의 2:30 부분 경의 "특정 인스턴스와 상관 없이 사용할 수 있는 함수의 편의성" 에 대한 교수님 설명을 참고해보시면 이해에 더욱 도움이 되실 것 같습니다.
답변 1