Trong C ++, chúng ta có thể dẫn xuất một số lớp. Đôi khi chúng ta cần gọi hàm tạo của lớp siêu cấp (Base class) khi gọi hàm khởi tạo của lớp dẫn xuất. Không giống như Java, không có biến tham chiếu cho siêu lớp. Nếu hàm tạo không được tham số hóa, thì nó sẽ được gọi tự động với lớp dẫn xuất, nếu không chúng ta phải đặt hàm tạo siêu lớp trong danh sách bộ khởi tạo của lớp dẫn xuất.
Trong ví dụ này, lúc đầu chúng ta sẽ thấy hàm tạo không có đối 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; }
Đầu ra
Constructor of base class Constructor of derived class
Bây giờ chúng ta hãy xem hàm tạo có thể nhận 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 { //base constructor as initializer list public: MyDerivedClass(int y) : MyBaseClass(50) { cout << "Constructor of derived class: " << y << endl; } }; int main() { MyDerivedClass derived(100); }
Đầu ra
Constructor of base class: 50 Constructor of derived class: 100