[r]
(1)NGƠN NGỮ LẬP TRÌNH
Bài 6:
Nạp Chồng Toán Tử và Kế Thừa
Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn
Bộ Môn Công Nghệ Phần Mềm – Khoa CNTT
(2)NỘI DUNG
Nạp chồng toán tử (Operator Overloading)
và Hàm bạn (Friend Functions)
Kế thừa (Inheritance)
2
(3)1 NẠP CHỒNG TOÁN TỬ
VÀ HÀM BẠN
(4)MỤC TIÊU
Nạp chồng toán tử cơ bản
Tốn tử hai ngơi (binary operators) Tốn tử một ngơi (unary operators) Nạp chồng bằng hàm thành viên
Hàm bạn lớp bạn
(5)(6)GIỚI THIỆU NẠP CHỒNG TOÁN TỬ
Những toán tử như +,-, %, == etc thực
những hàm!
Các hàm đặc biệt được gọi với cú pháp khác
so với cách gọi hàm thông thường Gọi hàm thông thường:
Tên_Hàm (Danh_Sách_Đối_Số)
Với tốn tử: ví dụ, x + 7, “+” tốn tử ngơi
(binary operator) với x, toán hạng (operands)
Thử viết theo cách gọi hàm thông thường: +(x,7)
“+” tên hàm
x, tham số hàm
(7)TẠI SAO DÙNG NẠP CHỒNG TỐN TỬ?
Những tốn tử được xây dựng sẵn (built-in
operators)
Ví dụ, +, -, = , %, ==, /, *
Đã thao tác với kiểu dựng sẵn C++ (built-in
types)
Nhưng nếu muốn thực hiện phép + với
đối tượng của lớp SinhVien ?, giống như:
sinh_vien1 + sinh_vien2;
Chúng ta có thể nạp chồng những tốn tử
này!
Để thao tác với kiểu chúng ta!
(8)CƠ BẢN VỀ NẠP CHỒNG
Nạp chồng toán tử
Tương tự với nạp chồng hàm Toán tử thân tên hàm
Ví dụ khai báo
const Money operator + (const Money& amount1, const Money& amount2);
Nạp chồng toán tử + với toán hạng đối tượng kiểu
Money
Giá trị trả lại kiểu Money
Mục đích: cho phép thực phép + hai đối
tượng lớp Money
(9)NẠP CHỒNG “+”
const Money operator + (const Money& amount1, const Money& amount2); Chú ý: hàm nạp chồng tốn tử “+” khơng phải
hàm thành viên lớp Money
Định nghĩa, cài đặt hàm phức tạp so với
phép cộng thơng thường (phải tính đến biến thành
viên, kiểm tra giá trị âm/dương, …)
(10)VÍ DỤ ĐỊNH NGHĨA NẠP CHỒNG TỐN TỬ
“+” CHO LỚP MONEY