상속 관계에서 Dynamic Polymorphism을 만드는 virtual function, virtual table 에 대해 알아보자. 예제1) double 사이즈는 8byte이므로, 상속받은 cat의 사이즈는 16byte. (double 변수 2개) Dynamic Polymorphism을 구현하기 위해서 speak 함수에 virtual을 넣어주고 derived 클래스에 override를 넣어주게 되면 사이즈가 바뀐다! 그 이유는, address 주소 정보가 추가로 들어가기 때문이다. Base 클래스인 Animal 의 경우, double 타입의 height 정보를 가지고 있어서 8 byte, Cat 의 경우 Base 클래스의 height 정보와 Cat 클래스만의 double 타입 weight 정보까지 ..
virtual
Virtual Function 가상 함수 : C++ 에서 가상 함수는 파생 클래스에서 재정의할 것으로 기대되는 멤버 함수를 의미한다. 이러한 가상 함수는 자신을 호출하는 객체의 동적 타입에 따라 실제 호출할 함수가 결정된다. *Base 클래스에서 virtual 키워드를 사용해 가상 함수를 선언하면, 파생 클래스에서 재정의된 멤버 함수도 자동으로 가상 함수가 된다. 내용 정리 1) 모든 상속의 관계에서는 베이스 클래스의 컨스트럭터가 가장 먼저 실행되고, 베이스 클래스의 디스트럭터가 가장 마지막에 실행되어야 한다. 2) Base class의 Destructor는 무조건 virtual public, 또는 protected로 선언되어야 한다. 3) C++ 에서 다이나믹 폴리모피즘을 만드는 방법은, 클래스 간에 ..