C++ STL 프로그래밍(클래스 템플릿)

3. 클래스 템플릿

3.4 템플릿 클래스 형태


....(블라블라)

* 템플릿 클래스 사용 예시


3.5 non-type 파라메터 사용 클래스 템플릿

* non-type 파라메터 사용 클래스 템플릿 사용 예시

3.6 템플릿 파라메터 디폴트 값 사용 하기

3.7 스택 클래스 크기를 클래스 생성자에서 처리

...(블라블라)
- 사용하기

- explicit 생성자 : 암시적인 형 변환 불가
3.8 클래스 템플릿 전문화

* 클래스 템플릿 전문화 예시




3.9 클래스 템플릿 부분 전문화
* 일반 클래스 템플릿

* 부분 전문화 클래스 템플릿

* 포인터 부분 전문화 클래스 템플릿

3.10 싱글톤 템플릿 클래스
- 클래스 상속 시, 템플릿 클래스를 상속 받아 상속 받는 클래스 기능 확장 가능
- 이를 현업에서 가장 많이 사용하는 경우가 싱글톤 클래스 템플릿
* 싱글톤 패턴
- 어떤 클래스의 인스턴스가 꼭 하나만 생성되도록
- 전역 접근 가능
- 복수개의 인스턴스가 생성되지 않도록 제한하는 역할
* 싱글톤 템플릿 클래스 사용 방법
1) 베이스 클래스를 템플릿으로 생성
2) 싱글톤 클래스 템플릿을 상속 받으면서 파라메터에 해당 클래스를 넘긴다.
3) 상속 받는 클래스가 싱글톤이 된다.
1) 베이스 템플릿 클래스 생성
template <typename T>

2) 싱글톤 클래스 템플릿을 상속 받으며 파라메터에 해당 클래스 넘김

int _nValue;
};
3) 상속 받은 클래스가 싱글톤인지 확인

결과 : 10, 20, 20
3.11 클래스 템플릿 코딩 스타일 개선
- 클래스 템플릿의 선언과 정의를 분리하여 알아보기 쉽게 개선하라(굳이? 모르면 더 복잡)
- 선언 예시

- 정의 예시

3.12 클래스 템플릿의 선언과 정의를 다른 파일에 하기(굳이 볼 필요 없다)
- 일반적인 클래스는 선언과 정의가 .h와 .cpp 처럼 각 파일에 저장
- 클래스 템플릿을 이 처럼 하려면 멤버 정의에 export 키워드 사용해야 한다.

- 하지만 대부분의 컴파일러는 export를 지원하지 않는다(공수가 심각)
* .inl(inline의미) 파일에 클래스 구현하고, 이를 헤더 파일에 포함하여 파일 분리하기


댓글
댓글 쓰기