dev_eun

[C++] ⑨ 템플릿(Templete) 본문

공부/C++

[C++] ⑨ 템플릿(Templete)

_eun 2020. 12. 10. 00:19

용어


클래스 템플릿

클래스 템플릿 : 클래스를 찍어내는 모양자

  • 선언

      template<typename T>
      class 클래스이름 {
    
      }
  • 함수 템플릿처럼 비슷하게 사용

    멤버 선언 및 정의
  • template<typename T> 클래스이름<T>::멤버함수이름() {

}

### 템플릿 매개 변수
* 선언
    ```c++
    template<typename T, typename T2>
    template<typename T, int nSize = 3>
    ```
* 사용
    ```c++
    CMyArray<int, 4> arr;
    ```
* * *
## 템플릿 특수화
### 함수 템플릿 특수화
```c++
template<typename T>
T Add(T a, T b) { return a + b; }

template< >
char* Add(char* pszLeft, char* pszRight) {
    ...
}

매개변수가 모두 char*이면 두 번째 함수로 대체

클래스 템플릿 특수화

template<typename T>
class CMyData {
    ...
}

template< >
class CMyData<char*> {
    ...
}

클래스 템플릿과 상속

template<typename T>
class CMyDataEx : public CMyData<T> {
    ...
}

스마트 포인터

스마트 포인터 설명
auto_ptr 인스턴스 자동으로 삭제, 웬만해선 쓰지마라
shared_ptr 포인팅 횟수 계산해서 0이되면 삭제
unique_ptr 하나의 소유자만 허용
weak_ptr 특수한 경우에만 사용
728x90

'공부 > C++' 카테고리의 다른 글

[C++] Visual Studio에서 단위테스트하기  (0) 2021.05.30
[C++] ⑩ 예외 처리(try/catch)  (0) 2020.12.10
[C++] ⑧ 수평적 관계와 집합 관계  (0) 2020.12.10
[C++] ⑦ 상속 심화  (0) 2020.12.10
[C++] ⑥ 상속 기본  (0) 2020.10.14