Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Quy tắc gọi constructor lớp cha (superclass) trong C++?

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