Bài giảng Lập trình hướng đối tượng - Bài 5: Nạp chồng toán tử - Phạm Thị Bích Vân

Nạp chồng toán tử

Các toán tử: +,-,*, /,

Các phép toán chỉ thực thi được với các kiểu dữ liệu cơ bản.

Nạp chồng toán tử là định nghĩa lại các toán tử cho các kiểu dữ liệu người dùng định nghĩa.

pptx 19 trang yennguyen 3440
Bạn đang xem tài liệu "Bài giảng Lập trình hướng đối tượng - Bài 5: Nạp chồng toán tử - Phạm Thị Bích Vân", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình hướng đối tượng - Bài 5: Nạp chồng toán tử - Phạm Thị Bích Vân

Bài giảng Lập trình hướng đối tượng - Bài 5: Nạp chồng toán tử - Phạm Thị Bích Vân
Bài 5:Nạp chồng toán tử 
Nạp chồng toán tử 
Các toán tử: +,-,*, /, 
Các phép toán chỉ thực thi được với các kiểu dữ liệu cơ bản. 
Nạp chồng toán tử là định nghĩa lại các toán tử cho các kiểu dữ liệu người dùng định nghĩa. 
Nạp chồng toán tử 
Cú pháp: 
 operator ([ds tham số]) 
Định nghĩa ngoài lớp: 
::operator([ds tham số]) 
{ 
//thân hàm 
} 
Nạp chồng toán tử 
Ví dụ: 
	Xây dựng lớp phân số. Nạp chồng toán tử + để cộng hai phân số. 
Nạp chồng toán tử 
class phanso 
{ 
	int ts,ms; 
public: 
	phanso operator +(phanso p); 
}; 
... 
phanso phanso::operator+(phanso p) 
{ 
	phanso kq; 
	kq.ts=ts*p.ms+ms*p.ts; 
	kq.ms=ms*p.ms; 
	return kq; 
}	 
Nạp chồng toán tử 
6 /20 
Cách gọi hàm toán tử: 
Dùng như cú pháp thông thường của phép toán 
Ví dụ: PS a,b,c; c=a+b; 
Dùng như hàm thành phần của đối tượng 
Ví dụ: 
PS a,b,c; 
c=a.operator+(b); 
Nạp chồng toán tử 
Chú ý: 
Nạp chồng toán tử không làm thay đổi thứ tự ưu tiên của các toán tử. 
Phần lớn các toán tử có thể được nạp chồng. Một số toán tử không nạp chồng như: 
Nạp chồng toán tử 
Ví dụ 
Xây dựng lớp số phức. 
Nạp chồng toán tử nhân số phức với một số thực, nhân số phức với một số phức. 
Thực hiện theo hai cách: 
Hàm nạp chồng là hàm thành viên 
Hàm nạp chồng là hàm không thành viên. 
Nạp chồng toán tử 
Có hai cách xây dựng hàm nạp chồng: 
Là thành viên: là phương thức. 
Không thành viên: Thường là hàm bạn. 
Chú ý: Khi hàm nạp chồng là hàm không thành viên khi đó không phải là phương thức của lớp, nên nếu định nghĩa ngoài lớp sẽ không có tên của lớp đi kèm. 
Nạp chồng toán tử 
 sp3=sp1*sp2. 
Chương trình hiểu là 
sp3=sp1.operator*(sp2). 
Chú ý: Thứ tự của đối số khi truyền. 
Nạp chồng toán tử Nhập / Xuất 
Để nạp chồng toán tử << phải có một toán hạng trái của kiểu ostream & (như là cout trong biểu thức cout<<X), vì thế nó phải là hàm không thành viên. 
Cú pháp: 
	 ostream & operator << (ostream & stream, ClassName Object) 
	Tham số thứ nhất là một tham chiếu đến dòng xuất ostream, tham số thứ hai là đối tượng được chèn vào dòng. 
Ví dụ: 
	 friend ostream& operator<<(ostream&, SoPhuc s); 
Tương tự với toán tử >>. 
Nạp chồng toán tử hai ngôi 
Các toán tử: +,-,*,\,>,<... 
Nạp chồng toán tử hai ngôi: 
Là hàm thành viên: có một tham số truyền vào. 
 Hàm không thành viên: Có hai tham số truyền vào (một trong hai tham số này phải là một đối tượng hoặc là một tham chiếu đến đối tượng của lớp. 
Nạp chồng toán tử trong C++ không có tính đối xứng. 
Nạp chồng toán tử một ngôi 
Các toán tử: - ,++,--...(lấy đảo dấu) 
Nạp chồng toán tử một ngôi: 
Hàm thành viên: không có tham số 
Hàm không thành viên: có một tham số. 
Nạp chồng các toán tử đặc biệt 
Toán tử [] 
Toán tử () 
Toán tử chuyển đổi kiểu 
Nạp chồng toán tử new và delete. 
 (Tài liệu Lê Thị Mỹ Hạnh – trang 90) 
#include 
using namespace std; 
class Employee 
{ 
private: 
int idNum; 
double salary; 
public: 
Employee( int, double); 
double operator+ (Employee); 
}; 
Employee::Employee( int id, double sal) 
{ 
idNum = id; 
salary = sal; 
} 
double Employee::operator+(Employee emp) 
{ 
double total; 
total = salary + emp.salary; 
return total; 
} 
int main() 
{ 
Employee clerk(1234, 400.00); 
Employee driver(3456, 650.00); 
double sum; 
sum = clerk. operator+(driver); 
cout << "Using operator+() function - Sum is $" << 
sum << endl; 
sum = clerk + driver; 
cout << "Adding clerk to driver - Sum is $" << 
sum << endl; 
return 0; 
} 
15 
Hàm nạp chồng là hàm bạn 
Thực hiện liên tiếp các phép + 
Nạp chồng toán tử << 
Ví dụ về nạp chồng toán tử >> 

File đính kèm:

  • pptxbai_giang_lap_trinh_huong_doi_tuong_bai_5_nap_chong_toan_tu.pptx