Ta có thể định nghĩa chồng cho các toán tử ++/-- theo quy định sau: - Toán tử ++/-- dạng tiền tố trả về một tham chiếu đến đối tợng thuộc lớp. - Toán tử ++/-- dạng tiền tố trả về một đối tợng thuộc lớp.
Ví dụ 4.10 #include <iostream.h> #include <conio.h> class Diem { private: int x,y; public: Diem() {x = y = 0;} Diem(int x1, int y1)
{x = x1; y = y1;}
Diem & operator ++(); //qua tai toan tu ++ tien to Diem operator ++(int); //qua tai toan tu ++ hau to Diem & operator --(); //qua tai toan tu -- tien to Diem operator --(int); //qua tai toan tu -- hau to void hienthi()
{
cout<<" x = "<<x<<" y = "<<y; }
};
Diem & Diem::operator ++() {
x++; y++;
return (*this); }
Diem Diem::operator ++(int) {
Diem temp = *this; ++*this;
return temp; }
Diem & Diem::operator --() {
x--; y--;
return (*this); }
Diem Diem::operator --(int) {
Diem temp = *this; --*this;
} void main() { clrscr(); Diem d1(5,10),d2(20,25),d3(30,40),d4(50,60); cout<<"\nd1 : ";d1.hienthi(); ++d1;
cout<<"\n Sau khi tac dong cac toan tu tang truoc :";
cout<<"\nd1 : ";d1.hienthi(); cout<<"\nd2 : ";d2.hienthi(); d2++;
cout<<" \n Sau khi tac dong cac toan tu tang sau";
cout<<"\nd2 : ";d2.hienthi(); cout<<"\nd3 : ";d3.hienthi(); --d3;
cout<<"\n Sau khi tac dong cac toan tu giam truoc :";
cout<<"\nd3 : ";d3.hienthi(); cout<<"\nd4 : ";d4.hienthi(); d4--;
cout<<"\n Sau khi tac dong cac toan tu giam sau : ";
cout<<"\nd4 : ";d4.hienthi(); getch();
}
Chơng trình cho kết quả nh sau: d1 : x = 5 y = 10
Sau khi tac dong cac toan tu tang truoc : d1 : x = 6 y = 11
d2 : x = 20 y = 25
Sau khi tac dong cac toan tu tang sau d2 : x = 21 y = 26
d3 : x = 30 y = 40
d3 : x = 29 y = 39 d4 : x = 50 y = 60
Sau khi tac dong cac toan tu giam sau : d4 : x = 49 y = 59
Chú ý: Đối số int trong dạng hậu tố là bắt buộc, dùng để phân biệt với dạng tiền
tố, thờng nó mang trị mặc định là 0.