연산자 오버로딩은 C++의 대부분의 기본 제공 연산자를 사용하여 수행할 수 있습니다. 오버로드된 연산자는 operator 키워드 뒤에 정의된 연산자 기호가 오는 함수입니다. 오버로드된 연산자에는 다른 함수와 마찬가지로 반환 유형과 매개변수 목록이 있습니다.
연산자 오버로딩을 사용하여 복소수를 빼는 프로그램은 다음과 같습니다 -
예시
#include<iostream> using namespace std; class ComplexNum { private: int real, imag; public: ComplexNum(int r = 0, int i =0) { real = r; imag = i; } ComplexNum operator - (ComplexNum const &obj1) { ComplexNum obj2; obj2.real = real - obj1.real; obj2.imag = imag - obj1.imag; return obj2; } void print() { if(imag>=0) cout << real << " + i" << imag <<endl; else cout << real << " + i(" << imag <<")"<<endl; } }; int main() { ComplexNum comp1(15, -2), comp2(5, 10); cout<<"The two comple numbers are:"<<endl; comp1.print(); comp2.print(); cout<<"The result of the subtraction is: "; ComplexNum comp3 = comp1 - comp2; comp3.print(); }
출력
The two comple numbers are: 15 + i(-2) 5 + i10 The result of the subtraction is: 10 + i(-12)
위의 프로그램에서 ComplexNum 클래스는 복소수의 실수부와 허수부 각각에 대해 real 및 img 변수를 갖는 클래스를 정의합니다. 생성자 ComplexNum은 real 및 imag의 값을 초기화하는 데 사용됩니다. 또한 기본값은 0으로 포함됩니다. 이는 다음 코드 스니펫에 표시됩니다. -
class ComplexNum { private: int real, imag; public: ComplexNum(int r = 0, int i =0) { real = r; imag = i; } }
오버로드된 연산자인 함수에는 오버로드되는 연산자인 - 뒤에 키워드 operator가 포함됩니다. 이 함수는 두 개의 복소수를 빼고 결과는 객체 obj2에 저장됩니다. 그런 다음 이 값이 ComplexNum 개체 comp3에 반환됩니다.
다음 코드 스니펫은 이것을 보여줍니다 -
ComplexNum operator - (ComplexNum const &obj1) { ComplexNum obj2; obj2.real = real - obj1.real; obj2.imag = imag - obj1.imag; return obj2; }
print() 함수는 복소수의 실수부와 허수부를 인쇄합니다. 이것은 다음과 같이 표시됩니다.
void print() { if(imag>=0) cout << real << " + i" << imag <<endl; else cout << real << " + i(" << imag <<")"<<endl; }