Operator overloading (การโหลดโอเปอเรเตอร์ซ้ำ) เป็นแนวคิดสำคัญใน C++ เป็นรูปแบบหนึ่งของ polymorphism (พอลิморฟิซึม) ที่โอเปอเรเตอร์ถูกโหลดซ้ำเพื่อให้ความหมายที่ผู้ใช้กำหนดเอง โอเปอเรเตอร์ที่โหลดซ้ำจะถูกใช้เพื่อดำเนินการกับชนิดข้อมูลที่ผู้ใช้กำหนดเอง ตัวอย่างเช่น โอเปอเรเตอร์ '+' สามารถโหลดซ้ำเพื่อทำการบวกกับชนิดข้อมูลต่างๆ เช่น Integer, String (concatenation) ฯลฯ
อินพุต
10 20 20 30
เอาต์พุต
30 50
คำอธิบาย
เพื่อดำเนินการบวกสองจำนวนโดยใช้โอเปอเรเตอร์ '-' ผ่าน Operator overloading โอเปอเรเตอร์แบบไบนารี (Binary operators) จะต้องการอ็อบเจ็กต์หนึ่งเป็นอาร์กิวเมนต์เพื่อทำการดำเนินการ หากเราใช้ Friend functions จะต้องการสองอาร์กิวเมนต์
โอเปอเรเตอร์ถูกเรียกใช้: ob1 - ob2 อ็อบเจ็กต์ก่อนโอเปอเรเตอร์จะเรียกใช้ฟังก์ชัน และอ็อบเจ็กต์หลังโอเปอเรเตอร์จะถูกส่งเป็นอาร์กิวเมนต์ไปยังฟังก์ชัน ดังนั้นในกรณีนี้ ob1 เป็น invoking object และ ob2 ถูกส่งเป็นอาร์กิวเมนต์
เราส่งค่า 10, 20 เป็นค่าของ x และ y ของ ob1 และ 20, 30 เป็นค่าของ x และ y ของ ob2
ตัวอย่าง
#include <iostream>
using namespace std;
class sum {
public:
int x, y, z;
void getdata(int a, int b) {
x = a;
y = b;
}
void display() {
cout << "\nSum of X:" << x;
cout << "\nSum of Y:" << y;
}
void operator-(sum &);
};
void sum::operator-(sum &ob) {
x = x + ob.x;
y = y + ob.y;
display();
}
int main() {
sum ob1, ob2;
ob1.getdata(10, 20);
ob2.getdata(20, 30);
ob1 - ob2;
}