KoreanFoodie's Study
Effective C++ | 항목 19 : 클래스 설계는 타입 설계와 똑같이 취급하자 본문
Tutorials/C++ : Advanced
Effective C++ | 항목 19 : 클래스 설계는 타입 설계와 똑같이 취급하자
GoldGiver 2022. 10. 25. 16:12
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다!
항목 19 : 클래스 설계는 타입 설계와 똑같이 취급하자
핵심 :
클래스 설계는 타입 설계이다. 새로운 타입을 정의하기 전에, 이번 항목에 나온 모든 고려사항을 빠짐없이 점검해 보자!
C++ 에서 새로운 클래스를 정의한다는 것은 새로운 타입을 하나 정의하는 것과 같다. 따라서 다음과 같은 요소들을 숙고한 후 만들어 보자!
- 새로 정의한 타입의 객체 생성 및 소멸은 어떻게 이루어져야 하는가? (operator new, operator delete[] 등등)
- 객체 초기화는 객체 대입과 어떻게 달라야 하는가?
- 새로운 타입으로 만든 객체가 값에 의해 전달되는 경우에 어떤 의미를 줄 것인가? (복사 생성자)
- 새로운 타입이 가질 수 있는 적법한 값에 대한 제약은 무엇으로 잡을 것인가? (e.g. 유리수 클래스에서 분모가 0 이 될 수 없음)
- 기존의 클래스 상속 계통망(inheritance graph) 에 맞출 것인가? (상속 및 가상/비가상 함수)
- 어떤 종류의 타입 변환을 허용할 것인가? (명시적/암시적 변환 등)
- 어떤 연산자와 함수를 두어야 의미가 있을까?
- 표준 함수들 중 어떤 것을 허용하지 말 것인가? (private 으로 선언, Uncopyable 등 - 항목 6 참조)
- 새로운 타입의 멤버에 대한 접근 권한을 어느 쪽에 줄 것인가? (접근 지정자 및 friend 클래스)
- '선언되지 않은 인터페이스'로 무엇을 둘 것인가? (항목 29 참조)
- 새로 만드는 타입이 얼마나 일반적인가? (템플릿이 필요한지)
- 정말로 꼭 필요한 타입인가? (비멤버 함수를 정의할지, 파생 클래스를 만들지)
'Tutorials > C++ : Advanced' 카테고리의 다른 글
Comments