ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Template (3) 클래스 템플릿 특수화
    @ 16. 1 ~ 17. 1/C++ 2013. 1. 29. 20:40

    특수화하는 이유는??

    특정 자료형에 대해서 구분이 되는 다른 행동을 보이기 위해서..

    typename<>

    이런식으로..

    다음과 같은 정의된 클래스 템플릿..

    template<typename T>
    class Point
    {
    private:
     T xpos, ypos;
    public:
     Point(int x=0, int y=0) : xpos(x), ypos(y)
     {}

     void ShowPosition() const;
    };

    이런식으로..특수화를 해준다..

    template<>
    class Point<char*>
    {
    private:
     char *string;
    public:
     void ShowData(char *str)
     {
      string = new char[strlen(str)+1];
      strcpy(string,str);
      cout << string << endl;
     }
    };

    주의할점은.. class Point<        >해줘야한다는것..

    템플릿 함수 특수화시

    template<>

    char *Max<char *> 랑 비슷한데..템플릿 함수는 생략이 가능함..


     

    template<> 과 temaplate<typename T>는 언제 어떤경우에 구분하여 사용하는가?

    template<>의 경우 T가 없는 특수화의 경우에 사용이 된다.

     

    template<>

    class Point<int> 이런식으로.. T를 정의할 필요가 없을때..

     

    template<typename T>는

    class Point

    {
    private:

    T xpos, ypos;

     이것처럼 T라는것을 정의하기 위해서..

     

    킁..졸려

     

    '@ 16. 1 ~ 17. 1 > C++' 카테고리의 다른 글

    배열(1)  (0) 2013.01.29
    포인터(1)  (0) 2013.01.29
    Template (2) 클래스 템플릿  (0) 2013.01.29
    Template (1) 함수 템플릿  (0) 2013.01.29
    비트연산자, 함수포인터, ctime  (0) 2013.01.27
Designed by Tistory.