
[C++] 가상 함수 (다형성)
·
개발/C++
다형성의 문제점 부모 클래스 포인터 변수로 자식 클래스 객체의 주소를 받았을 때 포인터가 부모 클래스 타입이기 때문에, 부모 클래스의 기능만 접근이 가능하다. 해결 방안 가상 함수를 통해서 자식 클래스에서 오버라이딩 한 함수를 호출할 수 있게 한다. 가상 함수(Virtual)의 작동 원리 부모 클래스에 가상 함수(virtaul 함수)가 1개 이상 존재하면 각 클래스(부모, 자식)는 타입 정보가 만들어진다. 클래스에 대한 타입 정보는 메모리에 하나만 생성이 되고 이 타입 정보에는 해당 클래스가 보유하고 있는 가상 함수의 주소를 모아놓은 '가상 함수 테이블'이 있다. '가상 함수 테이블'에 virtual이 붙은 함수가 등록이 된다. 부모 클래스에 보이지 않는 멤버(가상 함수 테이블 포인터)가 추가된다. 가상..