본문 바로가기
c++/template프로그래밍.

template기본문법 (parameter, friend, typename..)

by kcj3054 2022. 5. 18.

template의 parameter

template parameter로 template받기..

  • 템플릿의 인자로 non-type, type, template을 받을 수 있다 템플릿의 인자로 템플릿을?! 가능하다.

예시

template<typename T> class list{};


template<typename T, template<typename> class C  > 
class Stack
{

};
int main()
{
    //list s1; // list는 타입이 아니고 템플릿이라서 에러! 이렇게할려면 생성차를 통해서 타입을 deduction하도록해야한다.
    list<int> s2;  //list<int>는 타입..

    Stack<int, list > s3;
    return 0;
}
  • 위의 소스에서 list를 보면 list는 템플릿 클래스이다.

  • main부에서 Stack<int, list > s3으로 하나는 int타입을 하나는 템플릿을 받고있다. 그럼 Stack에서 그렇게 만들면된다.

  • Stack의 template 인자에서 template class C 는 list의 앞부분이다. 그래서 이것은 템플릿의 x를 받겠다는 것이다.

  • 또한 main함수 부분을 보자! list s1을 하면 list는 타입이 아니라 템플릿이다. , list s2를 하면 list는 타입이다.

default parameter..

  template<typename T = int, int N = 10>
class Stack
{

};

int main()
{
    Stack<int, 10> s1;

    Stack<int> s2;

    Stack<> s3;
}

  • 위의 소스는 기본값을 설정한 것이다.. Stack<> s3으로 하면 값을 지정하지 않고 default값으로 사용하겠다는 의미이다..

typename

'c++ > template프로그래밍.' 카테고리의 다른 글

template_CRT  (0) 2022.05.22
type_trais  (0) 2022.05.18
templateSpecialization, meta template.. (특수화, 메타 템플릿..)  (0) 2022.05.16
thintemplate  (0) 2022.05.16
template..packexpansion..  (0) 2022.05.16