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
Lepaskan: 2024-12-06 08:32:10
asal
885 orang telah melayarinya

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)
    {
    }
};
Salin selepas log masuk

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)
    {
    }
};
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan