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;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.