KoreanFoodie's Study
Effective C++ | 항목 38 : "has-a(...는...를 가짐)" 혹은 "is-implemented-in-terms-of(...는...를 써서 구현됨)"를 모형화할 때는 객체 합성을 사용하자 본문
Tutorials/C++ : Advanced
Effective C++ | 항목 38 : "has-a(...는...를 가짐)" 혹은 "is-implemented-in-terms-of(...는...를 써서 구현됨)"를 모형화할 때는 객체 합성을 사용하자
GoldGiver 2022. 10. 25. 16:29
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다!
항목 38 : "has-a(...는...를 가짐)" 혹은 "is-implemented-in-terms-of(...는...를 써서 구현됨)"를 모형화할 때는 객체 합성을 사용하자
핵심 :
1. 객체 함성(composition)의 의미는 public 상속이 가진 의미와 완전히 다르다.
2. 응용 영역에서 객체 합성의 의미는 has-a(...는...를 가짐)이다. 구현 영역에서는 is-implemented-in-terms-of(...는 ...를 써서 구현됨)의 의미를 갖는다.
합성(composition) 이란, 어떤 타입의 객체들이 그와 다른 타입의 객체들을 포함하고 있을 경우에 성립하는 타입들 사이의 관계를 일컫는다. 예시를 보자.
class Address { ... };
class PhoneNumber { ... };
class Person
{
public:
...
private:
std::string name;
Address address;
PhoneNumber phoneNumber;
}
위의 Person 클래스는 Address 와 PhoneNumber 클래스를 가지고 있고, 구현 영역에서는 is-implemented-in-terms-of 의 의미를 갖는다.
'Tutorials > C++ : Advanced' 카테고리의 다른 글
Effective C++ | 항목 40 : 다중 상속은 심사숙고해서 사용하자 (0) | 2022.10.25 |
---|---|
Effective C++ | 항목 39 : private 상속은 심사숙고해서 구사하자 (0) | 2022.10.25 |
Effective C++ | 항목 37 : 어떤 함수에 대해서도 상속받은 기본 매개변수 값은 절대로 재정의하지 말자 (0) | 2022.10.25 |
Effective C++ | 항목 36 : 상속받은 비가상 함수를 파생 클래스에서 재정의하는 것은 절대 금물! (0) | 2022.10.25 |
Effective C++ | 항목 35 : 가상 함수 대신 쓸 것들도 생각해 두는 자세를 시시때때로 길러 두자 (0) | 2022.10.25 |
Comments