메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

뇌를 자극하는 C++ 프로그래밍

뇌를 자극하는 C++ 프로그래밍 질의응답 게시판입니다.

23장 다형성과 가상함수 질문이요..

2012-06-02

|

by zelos6

2494

1. 675쪽 예제 23-4에서, 가상함수를 사용하여 Shape::Draw()를 정의했을 때,
sizeof(Shape), sizeof(Rectangle), sizeof(Circle)을 구해보니 각각 24, 40, 32가 나오더군요.
가상함수를 사용하지 않았을 경우 16, 32, 24인 것으로 보아 각 객체가 생성될 때 멤버 변수를 저장할 공간 외에
8바이트 씩을 더 사용하고 있음을 알았는데...
그런데 어떤 함수를 사용할 것인가에 대한 정보만이 필요하다면, 그 함수의 주소를 저장할 4바이트의 공간만 더 확보되면 되는 것 아닐까요? 어째서 8바이트가 필요한 걸까요?

2. 675쪽 하단에서 가상함수와 소멸자를 같이 사용할 경우에는 소멸자도 반드시 가상함수로 만들어야 한다고 하셨는데..
메모리를 동적으로 할당하는 경우에 해당되는 얘기인가요? 아니면 메모리 할당을 사용하지 않는 경우에도 반드시 소멸자를 따로 정의해줘야 하나요?
얼핏 생각하기에는 소멸자 함수 내에 delete 문이 있는 경우에만 소멸자를 가상함수로 해주면 될 것 같은데, 아닌가요?
댓글 입력