Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Pembolehubah Ahli Kelas Asas Harus Dimulakan dalam Pembina Kelas Terbitan?

Bagaimanakah Pembolehubah Ahli Kelas Asas Harus Dimulakan dalam Pembina Kelas Terbitan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-06 08:32:10884semak imbas

How Should Base Class Member Variables Be Initialized in a Derived Class Constructor?

Pemulaan Pembolehubah Ahli Kelas Asas dalam Pembina Kelas Terbitan

Dalam pengaturcaraan berorientasikan objek, adalah perkara biasa untuk mempunyai hubungan warisan antara kelas. Apabila kelas terbitan dibina, adalah penting untuk memulakan dengan betul pembolehubah ahli yang diwarisi daripada kelas asasnya. Walau bagaimanapun, percubaan untuk memulakan ahli kelas asas secara langsung dalam pembina kelas terbitan mungkin membawa kepada ralat.

Pertimbangkan contoh kod berikut:

class A
{
public:
    int a, b;
};

class B : public A
{
public:
    B() : A(), a(0), b(0)
    {
    }
};

Apabila cuba menyusun kod ini, ia akan terhasil dalam ralat, kerana pembina kelas terbitan tidak boleh secara langsung memulakan ahli kelas asas. Ini kerana ahli kelas asas tidak boleh diakses oleh kelas terbitan.

Untuk menyelesaikan isu ini, anda harus mencipta pembina dalam kelas asas yang membenarkan kelas terbitan untuk memulakan ahli yang diwarisi. Kod yang diubah suai berikut menggambarkan pendekatan ini:

class A
{
protected:
    A(int a, int b) : a(a), b(b) {}
private:
    int a, b;
};

class B : public A
{
public:
    B() : A(0, 0)
    {
    }
};

Kini, kelas terbitan B boleh memulakan ahli yang diwarisi a dan b dengan memanggil pembina kelas asas A. Dengan mengisytiharkan pembina dalam A sebagai dilindungi, ia boleh diakses kepada kelas terbitan tetapi tidak kepada kelas lain di luar hierarki warisan. Sebagai alternatif, anda boleh mengisytiharkan pembina A sebagai awam untuk membenarkan instantiasi luaran.

Dengan menggunakan pendekatan ini, anda boleh memastikan permulaan ahli yang diwarisi dengan betul sambil mengekalkan pengkapsulan dan menghalang akses terus kepada pembolehubah persendirian dari luar kelas.

Atas ialah kandungan terperinci Bagaimanakah Pembolehubah Ahli Kelas Asas Harus Dimulakan dalam Pembina Kelas Terbitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn