클래스의 멤버 함수는 일반 함수들과 마찬가지로 코드 영역에 존재합니다.
일반 함수들과 달리 멤버 함수는 thiscall이라는 calling convention을 사용합니다.
이는 멤버 함수 호출시 해당 클래스 인스턴스의 this 포인터를 넘겨주는 방식입니다.
따라서 클래스의 인스턴스가 아무리 많더라도 하나의 함수로 처리할 수 있습니다.
2006.07.14 23:25:16 (*.178.205.178)
해키스트
어셈블리어나 컴퓨터 구조를 조금 공부하시면 아마 이해가 쉬우실겁니다.
프로세스는 간단하게 PCB(Process Control Block), 텍스트, 데이터, 힙, 스택 으로 구성되어 있습니다.
어떠한 클래스 인스턴스의 데이터 영역과 함수(텍스트)영역은 다르다는걸 우선 아셔야 합니다.
간단하게 말하면 멤버 변수는 데이터(인스턴스가 전역변수일 경우), 힙(인스턴스가 동적 할당일 경우), 스택(인스턴스가 로컬변수일 경우)에 저장됩니다.
sizeof()함수로 얻어오는건 데이터 크기입니다.
메소드는 일종의 함수입니다. 함수는 문장들의 집합이고 문장은 명령어로 이루어져 있죠.
함수는 텍스트 영역에 저장됩니다.
CPU가 처리를 하는건 코드입니다. 데이터가 아니죠. 데이터는 해당 코드가 수행될때 참조되는겁니다.
예를들면.. 붕어빵 기계가 있으면 붕어빵 아저씨는 밀가루 반죽과 팥을 이용해 붕어빵을 계속 찍어낼 수 있다고 할까요?
붕어빵 기계 :CPU
밀가루 반죽, 팥 : 클래스 인스턴스의 데이터
붕어빵 아저씨 : 클래스 메서드
붕어빵 : 처리 결과
2006.07.15 01:10:13 (*.95.253.18)
붕어빵 예시는 정말 명확하면서도 유용하군요. ^^; 클래스배울때 엄청 고마워했던 예시...
일반 함수들과 달리 멤버 함수는 thiscall이라는 calling convention을 사용합니다.
이는 멤버 함수 호출시 해당 클래스 인스턴스의 this 포인터를 넘겨주는 방식입니다.
따라서 클래스의 인스턴스가 아무리 많더라도 하나의 함수로 처리할 수 있습니다.