2015년 10월 15일 목요일

[C++] class template




#include 
using namespace std;

class Stack
{
 int buff[10];
public:
 void push(int data){}
 int pop() {return 0;}
};

void main()
{
 Stack s;   
 s.push(55); //int
 s.push(10.123); //double ??  
}
Stack에 저장되는 data가 integer type이 아닌 double 형 type으로 바꾸길 원한다면..?


#include 
using namespace std;

template class Stack  
{
 T buff[10];
public:
 void push(T data){}
 T pop() {return 0;}
};

void main()
{
 Stack s; 
 s.push(10.123);  
}
template을 사용하여 type에 의존적인 부분을 변경한다.
class template은 function template과 달리 암시적 추론이 되지 않는다.
Stack s; 로 선언한것은 완전하지 않다.
따라서 Stack<double> s;와 같이 상세 type을 적어야 한다.

댓글 없음:

댓글 쓰기

[C++] meta programing

재귀 호출에 관해 template meta programming 을 적용한 예제를 살펴보자. #include using namespace std; int fact(int n){ if(n factorial 연산을 하는 일반적인 재귀 호출 함...