01. 컴포지션과 어그리게이션
- 컴포지션과 어그리게이션 둘 다 “부분과 전체”의 관계이다.
- 컴포지션은 쉽게 비유하자면 자동차와 부품 관계. 전체인 자동차가 없어지면 부품도 없어지므로, 전체가 없으면 부분도 존재할 수 없는 관계이다.
- 어그리게이션은 학급과 학생 관계를 의미한다. 학급이 없어져도 부분에 해당하는 학생은 독립적으로 존재 가능하므로
—
*다중 상속 ( multi inheritance ) : 한 개의 자식 클래스가 두 개 이상의 부모 클래스를 상속받는 것을 의미한다.
—
is-a 관계 vs has-a 관계
1️⃣ is-a
관계 ( 상속, Inheritance )
- “A는 B이다”라는 관계, Ex) “사과는 과일이다”
- 상속( public 또는 protected 상속 )을 사용해서 표현
2️⃣ has-a
관계 ( 컴포지션, Composition )
- “A는 B를 가지고 있다” 라는 관계, Ex) “자동차는 엔진을 갖고 있다.”
- 클래스 안에 다른 클래스의 객체를 멤버 변수로 포함
02. 가상 함수와 동적 바이딩
가상 함수( Virtual function )
C++의 클래스에서 오버라이딩( 재정의 ) 해야 하는 함수는 가상 함수( virtual function )로 선언해야 한다.
가상 함수 사용 방법은 간단하다. virtual 키워드를 멤버 함수를 선언할 때 앞 부분에 붙이기만 하면 된다.