Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การโอเวอร์โหลดออเปอเรเตอร์ ++ และ -- ใน C++ (Prefix และ Postfix)


บทนำ

ออเปอเรเตอร์เพิ่ม (++) และลด (--) เป็นออเปอเรเตอร์ 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)