บทนำ
ออเปอเรเตอร์เพิ่ม (++) และลด (--) เป็นออเปอเรเตอร์ Unary ที่สำคัญใน C++ บทความนี้แสดงวิธีโอเวอร์โหลดออเปอเรเตอร์ ++ สำหรับการใช้งานแบบ Prefix และ Postfix วิธีเดียวกันนี้ใช้กับออเปอเรเตอร์ -- ได้เช่นกัน
ตัวอย่าง: โอเวอร์โหลด ++ แบบ Prefix และ Postfix
#include <iostream>
using namespace std;
class Time {
private:
int hours;
int minutes;
public:
Time(int h, int m) {
hours = h;
minutes = m;
}
void display() {
cout << "H: " << hours << " M:" << minutes << endl;
}
// โอเวอร์โหลด Prefix ++
Time operator++() {
++minutes;
if (minutes >= 60) {
++hours;
minutes -= 60;
}
return Time(hours, minutes);
}
// โอเวอร์โหลด Postfix ++
Time operator++(int) {
Time T(hours, minutes); // เก็บค่าเดิม
++minutes;
if (minutes >= 60) {
++hours;
minutes -= 60;
}
return T; // คืนค่าเดิม
}
};
int main() {
Time T1(11, 59), T2(10, 40);
++T1; // Prefix
T1.display();
++T1;
T1.display();
T2++; // Postfix
T2.display();
T2++;
T2.display();
return 0;
}
ผลลัพธ์
H: 12 M:0 H: 12 M:1 H: 10 M:41 H: 10 M:42
ความแตกต่างระหว่าง Prefix และ Postfix
- Prefix (++obj): เพิ่มค่าก่อน แล้วคืนค่าที่เพิ่มแล้ว
- Postfix (obj++): คืนค่าเดิมก่อน แล้วค่อยเพิ่มค่า (ต้องมีพารามิเตอร์
intแบบ dummy)