ตัวดำเนินการเดี่ยวดำเนินการกับปริมาณหนึ่งรายการและต่อไปนี้คือตัวอย่างของตัวดำเนินการเดี่ยว − - ตัวดำเนินการเพิ่ม ( ) และลดค่า (--) คอมไพเลอร์แยกความแตกต่างระหว่างความหมายต่างๆ ของโอเปอเรเตอร์โดยพิจารณาจากประเภทของตัวถูกดำเนินการ
ตัวดำเนินการ unary ทำงานบนตัวถูกดำเนินการตัวเดียว และต่อไปนี้คือตัวอย่างของตัวดำเนินการ Unary -
- ตัวดำเนินการเพิ่ม (++) และตัวดำเนินการลด (--)
- ตัวดำเนินการ unary ลบ (-)
- ตัวดำเนินการตรรกะไม่ใช่ (!)
ตัวดำเนินการ unary ทำงานบนวัตถุที่พวกเขาถูกเรียกและโดยปกติ ตัวดำเนินการนี้จะปรากฏที่ด้านซ้ายของวัตถุ เช่นใน !obj, -obj และ ++obj แต่บางครั้งสามารถใช้เป็น postfix ได้เช่นกัน เช่น obj++ หรือ obj--.
ตัวอย่างต่อไปนี้จะอธิบายว่าตัวดำเนินการ bang(!) สามารถโอเวอร์โหลดสำหรับการใช้คำนำหน้าได้อย่างไร -
ตัวอย่าง
#include <iostream>
using namespace std;
class Distance {
private:
int feet; // 0 to infinite
int inches; // 0 to 12
public:
// Constructor
Distance(int f, int i) {
feet = f;
inches = i;
}
// method to display distance
void display() {
cout << "F: " << feet << " I:" << inches <<endl;
}
// overloaded bang(!) operator
Distance operator!() {
feet = -feet;
inches = -inches;
return Distance(feet, inches);
}
};
int main() {
Distance D1(3, 4), D2(-1, 10);
!D1;
D1.display(); // display D1
!D2; // apply negation
D2.display(); // display D2
return 0;
} ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
F: -3 I:-4 F: 1 I:-10