[C++] 템플릿관한 기초 질문입니다.

[C++] 템플릿관한 기초 질문입니다.

작성일 2008.04.21댓글 1건
    게시물 수정 , 삭제는 로그인 필요

C++를 공부하는 아주 초보학생입니다.

저희 교수님께서 오버로딩 두개를 템플릿 하나로 만드는 문제를 내신다고 하셨는데

템플릿이 어떤건지 예시와 설명 부탁 드립니다.



profile_image 익명 작성일 -

왜필요한지에 대한 간단한설명과 예제를 보여드리겠습니다

 

저희가 어떤 함수를 만들었습니다

예를들어

처음에는 int 값 두가지를 서로 값을 바꾸는함수

void myswap( int* x , int* y)

{

        int a;

        a = *x;

        *x = *y;

        *y = a;

}

이라는 함수를 만들었다고 합시다

 

사용하다보니 char 값도 바꿔야 하는 경우도 생기게 되었습니다

 

그럼 이때는 어떻게 해야 될까요?

C언어에서 만약에 그랬다면

다른 방법도 있기는 있지만

 

myswap_char( char* x ,char* y )

{

        char a;

        a = *x;

        *x = *y;

        *y = a;

}

이런함수가 필요할것입니다

 

그러다가 다시 double 형도 바꾸는 함수가 필요하게 되었습니다.

 

그럼

myswap_double( double* x , double* y )

{

        T a;

        a = *x;

        *x = *y;

        *y = a;

}

이런함수가 필요하게 될것입니다

 

하지만 C++에서는 이와같이 로직이 같은경우에 타입을 자유롭게 변환 시켜주는

템플릿이라는 것이있습니다

 

저와 같은 로직이 완전히 같은 함수들을 하나로

이렇게 묵을수있습니다

template < class T >

void myswap( T& x, T& y )

{

        T a;

        a = x;

        x = y;

        y = a;

}

역참조 연산은 아시죠?? ------------ & ------------

모르신다면 C++책 앞쪽을 참조하세요

 

--------------------------------예제 소스---------------------------------------

#include <iostream>


using namespace std;


template < class T >

void myswap( T& x, T& y );


int main()

{

        int a=10;

        int b=20;

        double c=20;

        double d=40;

 

        cout << "변환하기전의 a 값 : " << a << endl

                  << "변환하기전의 b 값: " << b << endl;

 

        cout << "변환하기전의 c 값 : " << c << endl

                  << "변환하기전의 d 값: " << d << endl;

 

        myswap( a , b );             // 타입이 다른데도같은 함수로 불려쓰이고 있습니다

        myswap( c , d );             // 템플릿 짱~

 

        cout << "변환 후의 a 값 : " << a << endl

                  << "변환 후의 b 값: " << b << endl;

 

        cout << "변환 후의 c 값 : " << c << endl

                  << "변환 후의 d 값: " << d << endl;

        return 0;

}


template < class T >

void myswap( T& x, T& y )

{

        T a;

        a = x;

        x = y;

        y = a;

}

[C++] 템플릿관한 기초 질문입니다.

... *y = a; } 이런함수가 필요하게 될것입니다 하지만 C++에서는 이와같이 로직이 같은경우에 타입을 자유롭게 변환 시켜주는 템플릿이라는...

매개변수 템플릿 C++ template...

... C++ 공부중에 막히는 부분 있어서 질문드립... 템플릿 자체가 템플릿 매개변수가 될수 있다고 해서 C++ 기초플러스 (4판) 책의 예제를...

C++ 에서 템플릿 관련 질문입니다 ㅠㅠ

... 문제는 템플릿관한 문제가 아니라고 생각이 되네요. 너무 어렵게 생각하고 계시는거 같습니다. 템플릿은 그냥 템플릿이고 입력은 따로 생각해보세요....

C++ 언리얼엔진 질문

... 싶어서 질문드립니다 1.c++ 개념 문법들을 먼저하고... C언어에서 C++ 갈 때, 그냥 시작해서 템플릿에서... "unreal 5 기초강좌"로 유툽 찾아보시면 꽤 나와요. (방금전에...

c++ 기초 클래스에 관한 질문입니다.

... 요즈음 학교에서 c++을 처음 배우고 있는 대학생입니다. 과제 하던 중... 질문을 읽어주셔서 감사드립니다. 즐거운 하루 되세요! 일단 답부터...

C++ 연산자에 관한 질문입니다.

서론은 길게 하지않고 바로 질문 들어가겠습니다. 제가 typedef itk... 도움이 되셨으면 좋겠네여 님이 말씀하신거는 c++템플릿에 대한...

C, C++관한 질문입니다.

... C 는 절차지향언어 C++은 객체지향언어 C야말로 모든 프로그래밍의 기초가 되겠고, 대부분의 프로그래밍 입문자 분들이 처음 접하시는 언어가 되겠습니다. 제...