Trong các hàm toán tử thành phần hai ngôi (có hai toán hạng) thì con trỏ this ứng với toán hạng thứ nhất, vì vậy trong tham số của toán tử chỉ cần dùng một tham số tường minh để biểu thị toán hạng thứ hai .
Ví dụ 1:Toán tử tải bội hai ngôi #include <iostream.h> #include <conio.h> class sophuc {float a,b; public : sophuc() {} sophuc(float x, float y) {a=x; b=y;}
sophuc operator +(sophuc c2) { sophuc c3; c3.a= a + c2.a ; c3.b= b + c2.b ; return (c3); } void hienthi(sophuc c) { cout<<c.a<<" + "<<c.b<<"i"<<endl; } }; void main() { clrscr(); sophuc d1 (2.1,3.4); sophuc d2 (1.2,2.3) ; sophuc d3 ; d3 = d1+d2; //d3=d1.operator +(d2); cout<<"d1= ";d1.hienthi(d1); cout<<"d2= ";d2.hienthi(d2);
cout<<"d3= ";d3.hienthi(d3); getch(); } Ví dụ 2: Phảiên bn 2 của ví dụ 1 #include <iostream.h> #include <conio.h> class sophuc {float a,b; public : sophuc() {} sophuc(float x, float y) {a=x; b=y;}
sophuc operator +(sophuc c2) { a= a + c2.a ; b= b + c2.b ; return (*this); } void hienthi(sophuc c) { cout<<c.a<<" + "<<c.b<<"i"<<endl; } }; void main() { clrscr(); sophuc d1 (2.1,3.4); sophuc d2 (1.2,2.3) ; sophuc d3 ; cout<<"d1= ";d1.hienthi(d1); cout<<"d2= ";d2.hienthi(d2); d3 = d1+d2; //d3=d1.operator +(d2); cout<<"d3= ";d3.hienthi(d3); getch(); 5.3. Định nghĩa chồng các toán tử ++ , --
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ụ #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;
return temp; }
{
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ươngtrì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
Sau khi tac dong cac toan tu giam truoc : 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.