-
윤성우 열혈 C++ 프로그래밍 9장) 가상의 원리와 다중상속(멤버함수의 위치, 가상함수 테이블, 가상상속)PROGRAMMING/C++ 2024. 1. 7. 00:03
빠르게 8장에 이어 9장 가상의 원리와 다중상속에 대해 정리해보고자 한다.
(혹시 저작권에 문제가 있다면 수정하겠습니다!! 개인적인 공부용으로 정리함을 알려드립니당)
https://product.kyobobook.co.kr/detail/S000001589147
맴버변수의 위치
객체가 생성되면 맴버변수는 객체 내에 존재하지만, 멤버함수는 메모리의 한 공간에 별도로 위치하며, 모든 객체가 이를 공유한다.
(그렇지만 객체 내 멤버함수가 존재한다고 생각하는게 객체지향적 논리 기준으로는 더 사고하기 편하다!)
가상함수 테이블과 속도
가상함수를 하나 이상 멤버로 지닌 클래스의 객체에는 가상함수 테이블 주소 값이 저장된다.
가상함수 테이블 때문에 실행속도가 감소하기는 하지만, 그 속도의 차이가 미미하고 가상함수에는 많은 장점이 존재하기 때문에 실행속도를 이유로 가상함수를 안 쓸 이유가 없다!
다중상속
다중상속은 매우 제한적으로 사용해야 한다!
- 다중상속의 모호성 : 두 기초 클래스에 동일한 이름의 멤버가 존재하는 경우 명시적으로 호출해야 한다.
- 가상 상속 : Base 클래스의 생성자가 두 번 호출되는 경우가 있다. 이 경우 가상 상속하면 된다!
ex) (상속관계) Base - MidDerived1, MidDerived2 - Last Derived
class MidDerived1 : virtual public Base{...}; class MidDerived2 : virtual public Base{...}; class Derived : public MidDerived1, public MidDerived2{...};
'PROGRAMMING > C++' 카테고리의 다른 글