Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 5 Nạp chồng toán tử, cung cấp cho người học những kiến thức như: Nạp chồng toán tử cơ sở; Kiểu đối tượng trả về; Hàm bạn, lớp bạn; Tham chiếu và nạp chồng. Mời các bạn cùng tham khảo!
NGUYÊN LÝ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 5: Nạp chồng toán tử Giảng viên: TS Lý Anh Tuấn Email: tuanla@tlu.edu.vn Nội dung Nạp chồng toán tử sở ◦ Các tốn tử ngơi ◦ Là hàm thành viên Kiểu đối tượng trả Hàm bạn, lớp bạn Tham chiếu nạp chồng ◦ > ◦ Các toán tử: =, [ ], ++, Giới thiệu nạp chồng toán tử Các toán tử +, -, %, ==, … thực hàm Chỉ đơn giản gọi với cú pháp khác: x+7 ◦ “+” toán tử hai ngơi ◦ x & tốn hạng Hãy tưởng tượng là: +(x, 7) ◦ “+” tên hàm ◦ x, đối số ◦ Hàm “+” trả tổng đối số Viễn cảnh nạp chồng toán tử Các toán tử dựng sẵn ◦ Vd: +, -, =, %, ==, /, * ◦ Đã làm việc với kiểu C++ dựng sẵn ◦ Ở dạng hai chuẩn Chúng ta nạp chồng chúng ◦ Để làm việc với kiểu ◦ Để cộng kiểu theo nhu cầu dạng ký hiệu mà quen thuộc Luôn nạp chồng cho thao tác tương đồng Nạp chồng sở Nạp chồng toán tử ◦ Rất giống nạp chồng hàm ◦ Bản thân tốn tử tên hàm Ví dụ khai báo: const Money operator +(const Money& amount1, const Money& amount2); ◦ Nạp chồng + cho toán hạng kiểu Money ◦ Để hiệu cần sử dụng tham chiếu ◦ Trả giá trị kiểu Money: cho phép cộng đối tượng “Money” Nạp chồng “+” Xét ví dụ trước: ◦ Lưu ý: “+” nạp chồng hàm thành viên ◦ Định nghĩa bao gồm nhiều thứ phép cộng đơn giản Đòi hỏi phát biểu phép cộng kiểu Money Phải điều khiển giá trị âm/dương Các định nghĩa nạp chồng toán tử thường đơn giản ◦ Chỉ thực “phép cộng” đặc thù cho kiểu bạn Định nghĩa “+” Money Định nghĩa phép “+” cho lớp Money Câu lệnh return trả đối tượng tạo hàm tạo Nạp chồng “==“ Toán tử đẳng thức, == ◦ Cho phép so sánh đối tượng Money ◦ Khai báo: bool operator ==(const Money& amount1, const Money& amount2); Trả kiểu bool với đẳng thức đúng/sai Cũng hàm thành viên Nạp chồng “==“ cho Money Định nghĩa toán tử “==“ cho lớp Money: Kiểu đối tượng trả Trả đối tượng ◦ Việc nạp chồng toán tử “+” const Money operator +(const Money& amount1, const Money& amount2); ◦ Trả đối tượng Trả đối tượng khơng ◦ Khi khơng có const khai báo: Money operator +( const Money& amount1, const Money& amount2); ◦ Xét biểu thức gọi: m1 + m2 Trả đối tượng Money sửa đổi Nên định nghĩa đối tượng trả 10 Sử dụng tham chiếu Dường nguy hiểm Hữu ích số trường hợp: Truyền tham chiếu ◦ Thường sử dụng để thi hành kỹ thuật Trả tham chiếu ◦ Cho phép thi hành nạp chồng toán tử viết tự nhiên ◦ Tưởng tượng trả bí danh cho biến 23 Trả tham chiếu Cú pháp: double& sampleFunction(double& variable); ◦ double& double khác ◦ Phải giống khai báo hàm đầu đề Mục trả phải có tham chiếu ◦ Chẳng hạn biến kiểu ◦ Không thể biểu thức chẳng hạn “x+5” Khơng có vị trí nhớ để trỏ đến Ví dụ định nghĩa hàm double& sampleFunction(double& variable) { return variable; } 24 Nạp chồng > Cho phép nhập xuất đối tượng ◦ Tương tự nạp chồng toán tử khác Cải thiện tính khả đọc ◦ Giống tất nạp chồng toán tử ◦ Cho phép: cout > myObject; ◦ Thay cho: myObject.output(); … 25 Nạp chồng