โอเวอร์โหลดโอเปอเรเตอร์สามารถทำได้ด้วยโอเปอเรเตอร์ในตัวส่วนใหญ่ใน C++ โอเปอเรเตอร์โอเวอร์โหลดเป็นฟังก์ชันที่มีโอเปอเรเตอร์คีย์เวิร์ดตามด้วยสัญลักษณ์โอเปอเรเตอร์ที่กำหนดไว้ โอเปอเรเตอร์โอเวอร์โหลดมีประเภทส่งคืนและรายการพารามิเตอร์เหมือนกับฟังก์ชันใดๆ
โปรแกรมที่ลบจำนวนเชิงซ้อนโดยใช้โอเปอเรเตอร์โอเวอร์โหลดมีดังนี้ -
ตัวอย่าง
#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 ถูกกำหนดซึ่งมีตัวแปรจำนวนจริงและอิมเมจสำหรับส่วนจริงและส่วนจินตภาพของจำนวนเชิงซ้อนตามลำดับ คอนสตรัคเตอร์ ComplexNum ใช้เพื่อเริ่มต้นค่าของจริงและอิมเมจ นอกจากนี้ยังมีค่าเริ่มต้นเป็น 0 ซึ่งแสดงในข้อมูลโค้ดต่อไปนี้ -
class ComplexNum {
private:
int real, imag;
public:
ComplexNum(int r = 0, int i =0) {
real = r;
imag = i;
}
} ฟังก์ชันที่เป็นโอเปอเรเตอร์โอเวอร์โหลดประกอบด้วยโอเปอเรเตอร์คีย์เวิร์ดตามด้วย - เนื่องจากเป็นโอเปอเรเตอร์ที่โอเวอร์โหลด ฟังก์ชันลบจำนวนเชิงซ้อนสองตัวและผลลัพธ์จะถูกเก็บไว้ในวัตถุ 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;
}