플릿

  • 여러 타입에서 작동 할 수 있는 클래스나 함수를 구현 할 수 있다.
  • c#의 제너릭은 템플릿의 간소화 버전 같은 느낌이다.

장점

  • 각 타입별로 같은 기능을 지원하는 클래스를 따로 만들 필요가 없다
  • 실제로 사용한 타입에 대해서만 코드가 생성된다

단점

  • 컴파일 시간이 길어진다
  • 용량이 커질 수 있다
  • 디버깅이 어려울 수 있다.
template <typename T> //클래스 템플릿 
class MyClassA
{
public:
    T mydata;

    template <typename A> //함수 템플릿
    A myfunc(A a, A b)
    {
        return a+b;
    }

public:
    MyClassA() {};
    ~MyClassA() {};
    //MyClassA(T a) :mydata(a) {};
};


template <typename T,typename Y>
int funcTest(T t,Y y)
{
    return t + y;
}


void main()
{
    MyClassA<int> classA;
    classA.mydata = 99;
    auto aff = classA.myfunc(3,4); //7 
    auto vlaue = funcTest(5, 9);   //14
}

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

이동 시멘틱  (0) 2019.04.29
함수 포인터  (0) 2019.04.29
스마트포인터  (0) 2019.04.29
OOP 객체지향프로그래밍  (0) 2019.04.29
C++ 11 추가된 기능  (0) 2019.04.29

+ Recent posts