// 클래스 template의 기본.
template
<typename T> class Stack

{

        T* buf;

public:

        Stack() {}             // 1. ok. 생성자이름은클래스이름

        //Stack<T>() {}        // 2. 에러

 

        // 복사생성자의모양

        Stack( const Stack<T>& ) {}

 

        void push ( T a );

};

 

// 클래스template의멤버함수를외부에구현하려면

template<typename T> void Stack<T>::push( T a )

{

}

 

void main()

{

        Stack<int> s1;

//      Stack      s2;  // error. Stack template의이름이지Type이아니다.

                        // typeStack<T> 이다.

}



// 멤버 함수 template를 활용해보자.!!! 

template<typename T> class Stack

{

public:

        Stack(){}

        template<typename U> explicit Stack(const Stack<U>&)

        {

        }

        explicit Stack(const Stack<T>&)

        {

        }

 

};

void main()

{

        Stack<int> s1;

        Stack<int> s2(s1);

 

        Stack<int> s3;

        Stack<double> s4(s3);

}

 

 

Tag |

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다