สมมติว่าเรามีคลาสจำนวนเชิงซ้อนที่มีส่วนจริงและส่วนจินตภาพ เราจะต้องโอเวอร์โหลดตัวดำเนินการบวก (+) เพื่อเพิ่มจำนวนเชิงซ้อนสองตัว นอกจากนี้เรายังต้องกำหนดฟังก์ชันเพื่อคืนค่าจำนวนเชิงซ้อนในรูปแบบที่เหมาะสม
ดังนั้น หากอินพุตเป็น c1 =8 - 5i, c2 =2 + 3i เอาต์พุตจะเป็น 10 - 2i
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
โอเวอร์โหลดตัวดำเนินการ + และใช้จำนวนเชิงซ้อน c2 อีกตัวเป็นอาร์กิวเมนต์
-
กำหนดจำนวนเชิงซ้อนที่เรียกว่า ret ซึ่งจำนวนจริงและอิมเมจเป็น 0
-
ของจริงของ ret :=ของจริง + ของจริงของ c2
-
imag of ret :=own imag + imag ของ 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)