728x90
반응형
클래스는 종류에 따라 그 쓰임이 다르며, 적용되는 규칙 또한 다르다. 먼저 값 클래스(std::pair, std::vector)는 다음과 같은 특징이 있다.
- 값을 중심으로 한 공용 디스트럭터, 복사 컨스트럭터, 할당이 존재한다.
- 가상 함수가 없다.
- 기반 클래스가 아닌 구체적인 클래스로 사용된다.
- 다른 클래스의 직접적인 멤머로서 또는 스택 내에서 인스턴스가 만들어진다.
기반 클래스(base calss)는 클래스 계층을 이루는 단위로, 다음과 같은 특징이 있다.
- 공용(public)이면서 가상(virtual)이거나 보호된(protected)이면서 가상이 아닌 디스트럭터, 비 공용 복사 컨스트럭터, 할당 연사자 등이 있다.
- 가상 함수를 통해 인터페이스를 구성한다.
- 인스턴스는 힙에서 동적으로 만들어지거나 스마트 포인터를 통해 만들어진다.
특성 클래스(traits class)는 타입에 대한 정보를 담는 임시 클래스로, 다음과 같은 특징이 있다.
- typedef와 정적 함수만을 포함하며, 상태 변경이 불가능하다.
- 인스턴스가 만들어지지 않는다.(컨스트럭터를 사용하지 않는 것이 일반적임)
정책 클래스(policy class, 일반적으로 템플릿을 말함)는 추가/제거가 가능한 기능의 일부로, 그 특징은 다음과 같다.
- 상태나 가상 함수가 있을 수도, 없을 수도 있다.
- 독립적으로 인스턴스가 만들어지지 않으며, 기반이나 멤버로만 만들어진다.
예외 클래스는 일반적이지 않은 형태를 말하며, 값과 참조에 있어 예외적인 조합이 사용된다.
예외의 발생은 값에 의한 것이지만 감지는 참조에 의해 이루어짐을 알아두자.
- 공용 디스트럭터와 실패가 없는(no-fail) 컨스트럭터(특히 복사 컨스트럭터)가 있다.
- 가상 함수가 있으며, 복제 등의 작업을 주로 한다.
- std::exception로부터 얻어지는 경우가 많다.
이 외에도 특정한 기능 지원을 위한 보조 클래스가 있다.
728x90
반응형
'소프트웨어 공부 > 프로그래밍' 카테고리의 다른 글
최소화된 클래스를 사용하라 (0) | 2021.04.20 |
---|---|
내부의 것은 너무 노출시키지 말라. (0) | 2021.04.20 |
간접적인 타입 변환을 피하기 위해 오버로딩을 활용하라 (0) | 2021.04.20 |
표준적인 형식의 산술 및 할당 연산자를 사용하라 (0) | 2021.04.20 |
값, (스마트) 포인터, 참조 중 적절한 방식으로 인자를 얻어라 (0) | 2021.04.20 |