연산자 오버로딩은 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;
}