#include<iostream>
using namespace std;
///////////////////////////////////////////////////////////////////////////////////////
// 클래스 템플릿의 멤버 함수 템플릿이 사용되는 대표적인 경우
// 1. complex 를 템플릿으로 설계하는 이유
// 2. T a = T(); => zero initialize : T 가 포인터 또는 빌트인 타입이면 0
// User 타입이면 디폴트 생성자로 초기화
//
//
////////////////////////////////////////////////////////////////////////////////////////
template<typename T>class complex{
T real;
T image;
public:
complex(int a =T() , int b=T()) : real(a), image(b){}
// Template 복사 생성자!!
// "U 가 T로 복사 될수 있을때 complex<U> 는 complex<T>로 복사 될 수 있어야 한다.
///
template<typename U>complex(const complex<U> & c) : real(c.real), image(c.image)
{
}
template<typename > friend class complex;
};
int main(){
// so <Dog> p1 = new Dog;
// sp <Animal> p2 = p1; //template 복사 생성자가 있어야 한다.
//
complex<int> c1(1 , 2);
complex<int> c2 = c1; //복사 생성자!!
complex<double> c3= c1;
}
'C,C++ > Android_FrameWork' 카테고리의 다른 글
[SSM 안드로이드 프레임워크 개발 강의]31. 퍼팩트 포워딩 (0) | 2012.08.16 |
---|---|
[SSM 안드로이드 프레임워크 개발 강의]30.Traits (타입 판독 STL) (0) | 2012.08.16 |
[SSM 안드로이드 프레임워크 개발 강의]28. 템플릿이야기 2(클래스 템플릿) (0) | 2012.08.16 |
[SSM 안드로이드 프레임워크 개발 강의]27. 템플릿이야기 1 (0) | 2012.08.16 |
[SSM 안드로이드 프레임워크 개발 강의]26. RTTI , RTCI 직접 구현해보기 (0) | 2012.08.16 |