C++7 주 째 프로젝트 5-템 플 릿 클래스 에서 친구 함수 사용
[프로젝트 5-템 플 릿 류 에서 우 원 함 수 를 사용 합 니 다]우 원 함 수 는 비 구성원 함수 가 개인 데이터 구성원 에 게 접근 하 는 경 로 를 제공 합 니 다.템 플 릿 류 는 클래스 의 데이터 구성원 의 유형 을 유연 하 게 만 듭 니 다.이 두 가지 기술 을 결합 하여 사용 할 수 있 습 니 다.프로젝트 4 를 바탕 으로 친구 함수 로 이 루어 지 는 덧셈 을 지원 할 수 있 도록 요구 합 니 다.테스트 에 사용 할 main()함 수 는 다음 과 같 습 니 다.
int main( )
{
Complex<int> c1(3,4),c2(5,-10),c3;
c3=c1.complex_add(c2); // ,
cout<<"c1+c2=";
c3.display( );
Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6;
c6=c4.complex_add(c5);
cout<<"c4+c5=";
c6.display( );
Complex<int> c7;
c7=add_complex(c1,c2); // ,
cout<<"c1+c2=";
c7.display( );
system("pause");
return 0;
} 참고 해답:
#include <iostream>
using namespace std;
template<class T1>
class Complex
{
public:
Complex( ){real=0;imag=0;}
Complex(T1 r,T1 i){real=r;imag=i;}
Complex complex_add(const Complex &c2);
template<class T2> friend Complex<T2> add_complex(const Complex<T2> &c1, const Complex<T2> &c2); // , : 。 CodeBlocks , T2 T1,VS2008
void display( );
private:
T1 real;
T1 imag;
};
template<class T1>
Complex<T1> Complex<T1>::complex_add(const Complex<T1> &c2)
{
Complex<T1> c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;
}
//
template<class T1>
Complex<T1> add_complex(const Complex<T1> &c1, const Complex<T1> &c2)
{
Complex<T1> c;
c.real=c1.real+c2.real;
c.imag=c1.imag+c2.imag;
return c;
}
template<class T1>
void Complex<T1>::display( )
{
cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
int main( )
{
Complex<int> c1(3,4),c2(5,-10),c3;
c3=c1.complex_add(c2); // ,
cout<<"c1+c2=";
c3.display( );
Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6;
c6=c4.complex_add(c5);
cout<<"c4+c5=";
c6.display( );
Complex<int> c7;
c7=add_complex(c1,c2); // ,
cout<<"c1+c2=";
c7.display( );
return 0;
}