Trong C++, ta có thể dẫn xuất các lớp. Đôi khi cần gọi constructor của lớp cha (base class) khi gọi constructor của lớp dẫn xuất. Khác với Java, không có biến tham chiếu cho lớp cha. Nếu constructor không tham số, nó sẽ tự động được gọi cùng với lớp dẫn xuất, ngược lại ta phải đưa constructor lớp cha vào danh sách khởi tạo (initializer list) của lớp dẫn xuất.
Trong ví dụ này, trước hết xem constructor không tham số.
Ví dụ
#include <iostream>
using namespace std;
class MyBaseClass {
public:
MyBaseClass() {
cout << "Constructor of base class" << endl;
}
};
class MyDerivedClass : public MyBaseClass {
public:
MyDerivedClass() {
cout << "Constructor of derived class" << endl;
}
};
int main() {
MyDerivedClass derived;
}
Kết quả
Constructor of base class Constructor of derived class
Bây giờ xem constructor có tham số.
Ví dụ
#include <iostream>
using namespace std;
class MyBaseClass {
public:
MyBaseClass(int x) {
cout << "Constructor of base class: " << x << endl;
}
};
class MyDerivedClass : public MyBaseClass {
// constructor lớp cha trong initializer list
public:
MyDerivedClass(int y) : MyBaseClass(50) {
cout << "Constructor of derived class: " << y << endl;
}
};
int main() {
MyDerivedClass derived(100);
}
Kết quả
Constructor of base class: 50 Constructor of derived class: 100