Khi nào cần xây dựng hàm tạo sao chép: Khi lớp dẫn xuất có các thuộc tính (kể cả thuộc tính thừa kế từ các lớp cơ sở) là con trỏ, thì nhất thiết không được dùng hàm tạo sao chép mặ[r]
Trang 1LÊ ĐỨC THỊNH
Trang 21. Giới thiệu chung
2. Đơn thừa kế
3. Hàm ảo và tính đa hình
4. Đa thừa kế
Trang 3 Một lớp được xây dựng thừa kế một lớp khác gọi là lớp dẫn xuất (lớp con). Lớp dùng để
xây dựng lớp dẫn xuất gọi là lớp cơ sở (lớp cha)
Tính thừa kế: Một lớp dẫn xuất ngoài các
thành phần của riêng nó, nó còn được thừa
kế tất cả các thành phần của các lớp cơ sở
có liên quan.
Trang 4SINH VIÊN
CAO ĐẲNG CHỨC TẠI CHỈNH HOÀN
CHÍNH
QUY
Lớp cơ sở
Lớp dẫn xuất
Kế thừa
Trang 5 Cách xây dựng lớp dẫn xuất: Giả sử đã
định nghĩa các lớp A và B. Để xây dựng lớp
C dẫn xuất từ A và B, ta viết như sau:
class C : public A, public B
{
private:
// Các thành phần riêng
protected:
// Các thành phần cho phép lớp con truy xuất
public:
// Các thành phần công cộng
Trang 6 Khi nào cần xây dựng hàm tạo sao chép: Khi
lớp dẫn xuất có các thuộc tính (kể cả thuộc tính
thừa kế từ các lớp cơ sở) là con trỏ, thì nhất thiết không được dùng hàm tạo sao chép mặc định, mà phải xây dựng cho lớp dẫn xuất một hàm tạo sao chép.
Cách xây dựng hàm tạo sao chép cho lớp dẫn xuất
+ Trước hết cần xây dựng toán tử gán cho lớp dẫn xuất + Sau đó xây dựng hàm tạo sao chép cho lớp dẫn xuất theo mẫu:
Tên_lớp_dẫn_xuất (Tên_lớp_dẫn_xuất &h )
{
*this = h ;
}
Trang 7 Bài tập chương 4 sách Nguyễn Thanh Thủy,
Bài tập lập trình hướng đối tượng với C++,
NXB Khoa học kỹ thuật Hà Nội 2001