Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 63 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
63
Dung lượng
1,78 MB
Nội dung
Ngơn ngữ lập trình NẠP CHỒNG TỐN TỬ VÀ KẾ THỪA Trần Thị Ngân Bộ môn Công nghệ phần mềm, Khoa CNTT Trường đại học Thủy Lợi Email: ngantt@tlu.edu.vn Nội dung Nạp chồng toán tử (Operator Overloading) Hàm bạn (Friend Functions) Kế thừa (Inheritance) Nạp chồng toán tử hàm bạn Nạp chồng toán tử Tốn tử hai ngơi (binary operators) Tốn tử (unary operators) Nạp chồng hàm thành viên Hàm bạn lớp bạn ► Giới thiệu nạp chồng toán tử Những toán tử %, ==, thực hàm! Các hàm đặc biệt 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) Viết theo cách gọi hàm thông thường: +(x,7) “+” tên hàm x, tham số hàm Hàm “+” trả lại giá trị tổng đối số ► Tại dùng nạp chồng toán tử? Những tốn tử 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 muốn thực phép + với đối tượng lớp SinhVien, giống như: sinh_vien + sinh_vien2; Chúng ta nạp chồng toán tử này! Để thao tác với kiểu chúng ta! Nạp chồng toán tử? Nạp chồng toán tử C++ hàm với tên đặc biệt: Tên hàm từ khóa operator theo sau ký hiệu toán tử định nghĩa Giống hàm khác, toán tử nạp chồng có kiểu trả danh sách tham số Hầu hết toán tử nạp chồng định nghĩa dạng: hàm khơng thành viên lớp (non-member) hàm thành viên lớp Nạp chồng toán tử? Trong trường hợp định nghĩa nạp chồng dạng hàm khơng có thành viên (non-member): Box operator+(const Box&, const Box&); Trường họp hàm thành viên lớp: Box operator+(const Box& b) Cơ nạp chồng Định nghĩa lớp Box sau: class Box { public: double tinhTheTich(void); void setChieuDai( double dai ); void setChieuRong( double rong ); void setChieuCao( double cao ); Box operator+(const Box& b);// Nạp chồng toán tử + hàm thành viên lớp private: double chieudai; double chieurong; double chieucao; }; ► Cơ 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ử nạp chồng tên hàm (+, -, *, /, %,…) Ví dụ khai báo const Box operator + (const Box & b); - Nạp chồng toán tử + với toán hạng đối tượng kiểu Box - Giá trị trả lại kiểu Box - Mục đích: cho phép thực phép + hai đối tượng lớp Box ► Nạp chồng toán tử “+” const Box operator + (const Box & b); Chú ý: Hàm nạp chồng toán tử “+” hàm thành viên lớp Box Nếu không hàm thành viên lớp Box hàm viết dạng const Box operator + (const Box & b1, const Box & b2); ► ... dung Nạp chồng toán tử (Operator Overloading) Hàm bạn (Friend Functions) Kế thừa (Inheritance) Nạp chồng toán tử hàm bạn Nạp chồng toán tử Tốn tử hai ngơi (binary operators) Tốn tử (unary... Box& b);// Nạp chồng toán tử + hàm thành viên lớp private: double chieudai; double chieurong; double chieucao; }; ► Cơ 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ử nạp chồng tên... sinh_vien2; Chúng ta nạp chồng toán tử này! Để thao tác với kiểu chúng ta! Nạp chồng toán tử? Nạp chồng toán tử C++ hàm với tên đặc biệt: Tên hàm từ khóa operator theo sau ký hiệu toán tử định nghĩa