C++7 주 째 프로젝트 5-템 플 릿 클래스 에서 친구 함수 사용

수업 첫 페이지 주소:http://blog.csdn.net/sxhelijian/article/details/7910565,이번 주 제목 링크:http://blog.csdn.net/sxhelijian/article/details/8775137
[프로젝트 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;
}

좋은 웹페이지 즐겨찾기