오버라이딩이 되었냐 안되었냐에요. 가상함수라도 오버라이딩이 안되있으면 메모리에 멤버함수가 한개밖에 안잡혀요. 다만 가상함수를 선언하면 각 부모클래스와


자식클래스들이 가상함수테이블을 가지게되긴하지만 함수 메모리 잡히는거랑은 상관없어요




저기보면 가상함수라도 오버라이딩안할시 FunctionA의 함수주소가 A와 B클래스에서 동일하져.


각변수에있는 vfptr 그러니까 vitual function ptr 가상함수 테이블 주소변수가 각각 로드되고 거기에 따른 함수메모리가잡힘. vfptr이 가르키는 0x01009C58


메모리 주소따라가보면 92 14 00 01 이라고 해서 4바이트별로 가상함수 테이블이 가상함수 주소를담고있음. 내껀 리틀엔디안 아키텍쳐라서


92 14 00 01 이지만 실제 메모리는 01 00 14 92고 각각 A클래스와 B클래스의 가상함수테이블 주소는 다르지만 내부에 함수포인터는 같은걸 볼수있져.


요는 오버라이딩 안한 가상함수를 포함한 클래스가있을때 각각 인스턴스변수들은 가상함수테이블변수를 가지고있고 그안에 동일한 함수를 가르키는 함수포인터가 있어요.


그리고 더 중요한건 A::FunctionA와 가상함수테이블에 있는 A::FunctionA의 가상함수로 만들면 실제 정의된 함수가아닌 가상함수로 재정의된 함수를 쓴다는거져



물론 가상함수 오버라이딩하면 원래 함수도 개별적으로 잡히고 거기에따른 가상함수도 개별적으로 메모리가 잡힙니다.