실수부와 허수부가 있는 복소수 클래스가 있다고 가정합니다. 두 개의 복소수를 더하려면 더하기(+) 연산자를 오버로드해야 합니다. 또한 적절한 표현으로 복소수를 반환하는 함수를 정의해야 합니다.
따라서 입력이 c1 =8 - 5i, c2 =2 + 3i와 같으면 출력은 10 - 2i가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
+ 연산자를 오버로드하고 다른 복소수 c2를 인수로 사용
-
실수와 이미지가 0인 ret라는 복소수를 정의합니다.
-
ret의 실수 :=자신의 실수 + c2의 실수
-
ret의 이미지 :=자체 이미지 + c2의 이미지
-
리턴 렛
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <iostream> #include <sstream> #include <cmath> using namespace std; class Complex { private: int real, imag; public: Complex(){ real = imag = 0; } Complex (int r, int i){ real = r; imag = i; } string to_string(){ stringstream ss; if(imag >= 0) ss << "(" << real << " + " << imag << "i)"; else ss << "(" << real << " - " << abs(imag) << "i)"; return ss.str(); } Complex operator+(Complex c2){ Complex ret; ret.real = real + c2.real; ret.imag = imag + c2.imag; return ret; } }; int main(){ Complex c1(8,-5), c2(2,3); Complex res = c1 + c2; cout << res.to_string(); }
입력
c1(8,-5), c2(2,3)
출력
(10 - 2i)