소프트웨어 공부/프로그래밍

만들고 있는 클래스가 무엇인지 확실히 하라

야곰야곰+책벌레 2021. 4. 20. 14:57
728x90
반응형

클래스는 종류에 따라 그 쓰임이 다르며, 적용되는 규칙 또한 다르다. 먼저 값 클래스(std::pair, std::vector)는 다음과 같은 특징이 있다.

 

  •  값을 중심으로 한 공용 디스트럭터, 복사 컨스트럭터, 할당이 존재한다.
  •  가상 함수가 없다.
  •  기반 클래스가 아닌 구체적인 클래스로 사용된다.
  •  다른 클래스의 직접적인 멤머로서 또는 스택 내에서 인스턴스가 만들어진다.

기반 클래스(base calss)는 클래스 계층을 이루는 단위로, 다음과 같은 특징이 있다.

 

  •    공용(public)이면서 가상(virtual)이거나 보호된(protected)이면서 가상이 아닌 디스트럭터, 비 공용 복사 컨스트럭터, 할당 연사자 등이 있다.
  •    가상 함수를 통해 인터페이스를 구성한다.
  •    인스턴스는 힙에서 동적으로 만들어지거나 스마트 포인터를 통해 만들어진다.

특성 클래스(traits class)는 타입에 대한 정보를 담는 임시 클래스로, 다음과 같은 특징이 있다.

 

  •   typedef와 정적 함수만을 포함하며, 상태 변경이 불가능하다.
  •   인스턴스가 만들어지지 않는다.(컨스트럭터를 사용하지 않는 것이 일반적임)

정책 클래스(policy class, 일반적으로 템플릿을 말함)는 추가/제거가 가능한 기능의 일부로, 그 특징은 다음과 같다.

 

  •   상태나 가상 함수가 있을 수도, 없을 수도 있다.
  •   독립적으로 인스턴스가 만들어지지 않으며, 기반이나 멤버로만 만들어진다.

예외 클래스는 일반적이지 않은 형태를 말하며, 값과 참조에 있어 예외적인 조합이 사용된다.

예외의 발생은 값에 의한 것이지만 감지는 참조에 의해 이루어짐을 알아두자.

 

  •   공용 디스트럭터와 실패가 없는(no-fail) 컨스트럭터(특히 복사 컨스트럭터)가 있다.
  •   가상 함수가 있으며, 복제 등의 작업을 주로 한다.
  •   std::exception로부터 얻어지는 경우가 많다.

이 외에도 특정한 기능 지원을 위한 보조 클래스가 있다.

728x90
반응형