Những thành phần nào được thừa kế:
Về nguyên tắc, lớp dẫn xuất kế thừa tất cả các member của lớp cơ sở ngoại trừ:
- Constructor và destructor
- operator=()
- Friend functions, friend classes. Cái này mình chưa rõ lắm.
Nếu lớp cở sở không có hàm tạo mặc định hoặc bạn muốn gọi hàm tạo khi tạo 1 đối tượng ở lớp dẫn xuất, bạn có thể định nghĩa nó ở hàm tạo của lớp dẫn xuất theo cú pháp:
derived_constructor_name (parameters) : base_constructor_name (parameters) {...}
Ví dụ:
// constructors and derived classesKết quả:
#include
using namespace std;
class mother {
public:
mother ()
{ cout << "mother: no parameters\n"; }
mother (int a)
{ cout << "mother: int parameter\n"; }
};
class daughter : public mother {
public:
daughter (int a)
{ cout << "daughter: int parameter\n\n"; }
};
class son : public mother {
public:
son (int a) : mother (a)
{ cout << "son: int parameter\n\n"; }
};
int main () {
daughter cynthia (0);
son daniel(0);
return 0;
}
mother: no parametersBạn cần chú ý hàm tạo của daughter và son:
daughter: int parameter
mother: int parameter
son: int parameter
daughter (int a) // nothing specified: call defaultNếu kết hợp tốt sự kế thừa và dùng hàm tạo, bạn có thể dùng nó để bẫy lỗi chương trình ( như kiểm tra tham số nhập vào chẳng hạn)
son (int a) : mother (a) // constructor specified: call this
Lưu ý: Chỉ có kế thừa trực tiếp thôi.
Không có nhận xét nào:
Đăng nhận xét