ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Template 사용
    C++ 2014. 1. 16. 01:54
    1. Template는 다양한 인자 타입에 적용할 수 있는 알고리즘을 만들때 사용한다.

      Function Template의 예

      Template <typename T>

      int sizeof(T a) {

      return sizeof(a);

    }

    그러나 실제로 이런 Function Template를 만들어 사용하기 보다는 STL에서 정의된 Template를 사용하라.

    1. Function Template에서 특정 타입에 대해서 별도 구현이 필요한 경우에 특화된 Template Function을 정의한다. à Template Function Specializtion

      Template <>

      int sizeof(char* a) {

      return strlen(a);

      }

       

    • 템플릿의 특수화 버전은 반드시 일반화 버전을 미리 앞에서선언해 두어야 한다.
    • 템플릿 특수화 버전은 그것이 사용되는 지점 앞에 선언해 둘 것.

     

    1. 실제로 Template를 사용할 필요는 객체의 container가 될 Class를 정의할 때이다.


          - 컨테이너에 대한 알고리즘을 구현하는 함수는 동일 계열의 컨테이너군에 모두 적용할 수 있는 
              알고리즘을 구현하는 템플릿 함수로 만든다.

      - 어떤 클래스, 템플릿이 서로 논리적으로 가까운 관계를 가지고 있으면 이런 것들은 공통의 
              네임스페이스에 넣는다

    4. 포인터를 담는 컨테이너를 구현할 때 코드 크기를 최소화하려면 특수화 버전을 제공할 것.

    5. 템플릿이 인스턴스화되는 지점의 주변 환경에 대한 템플릿 정의의 의존도를 최소화하자.

    6. 선언한 특수화 버전은 반드시 정의하자.

    7. C스타일 문자열 및 배열에 대한 템플릿 특수화가 필요한지 생각할 것.

    8. 타입은 다르지만 개념이 동일한 구현코드를 하나의 인터페이스를 통해 제공하려면 템플릿 특수화와 오버로딩을 사용하자.

    9. template <typename T> or <class T> 는 같은 Notation이나 구분해서 사용하자.

    Typename을 정의할 때는 class를 사용하고

    변수로 사용을 할 때는 typename을 사용하자.

    'C++' 카테고리의 다른 글

    Cast 연산자  (0) 2014.01.22
    RTTI : Run-time type information 사용예  (0) 2014.01.18
    Friend의 사용시기  (0) 2014.01.14
    Overloading과 Overriding의 차이  (0) 2014.01.14
    가상함수, 추상클래스의 권고 사항  (0) 2014.01.14
Designed by Tistory.