(C++ : Template) 복사생성자 template

Posted by : at

Category : Cpp


template<typename T> class Complex
{
  T re, im;
public:
  Complex(T r = {}, T i = {}) : re(r), im(i) {}
};

int main()
{
  Complex<int> c1(1, 1);      // okay
  Complex<int> c2 = c1;       // okay
  
  Complex<double> c3 = c1;    // 타입이 다르기에 error
  // 복사 생성자를 만들어서 에러가 발생하지 않게 만들어 보자.
}
template<typename T> class Complex
{
  T re, im;
public:
  Complex(T r = {}, T i = {}) : re(r), im(i) {}
  
  // 일반적 복사 생성자
  Complex(const Complex<T>& c) {}
  
  // 자신과 다른 타입의 복사 생성자
  template<typename U>
  Complex(const Complex<U>& c);
  
  template<typename> friend class Complex;    // 상호간 접근이 가능하게 만들어 줘야한다.
};

tempate<typename T> template<typename<U>
Complex<T>::Complex(const Complex<U>& c) : re(c.re), im(c.im)
{
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links