Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memulakan Pembolehubah Ahli Kelas Asas dengan Betul dalam Pembina Kelas Terbitan?

Bagaimana untuk Memulakan Pembolehubah Ahli Kelas Asas dengan Betul dalam Pembina Kelas Terbitan?

Linda Hamilton
Linda Hamiltonasal
2024-12-05 01:14:10730semak imbas

How to Correctly Initialize Base Class Member Variables in a Derived Class Constructor?

Cara Memulakan Pembolehubah Ahli Kelas Asas dalam Pembina Kelas Terbitan

Dalam pengaturcaraan berorientasikan objek, adalah perkara biasa untuk mempunyai kelas terbitan yang diwarisi daripada kelas asas. Apabila mencipta pembina dalam kelas terbitan, adalah penting untuk memulakan pembolehubah ahli yang diwarisi daripada kelas asas dengan betul.

Pertimbangkan kod berikut:

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

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

Dalam contoh ini, kelas terbitan B cuba untuk memulakan pembolehubah ahli a dan b dalam pembinanya sendiri. Walau bagaimanapun, ini adalah pendekatan yang salah. Cara yang betul untuk memulakan pembolehubah ahli kelas asas dalam kelas terbitan ialah menggunakan pembina kelas asas:

class A {
protected:
    A(int a, int b) : a(a), b(b) {} // Accessible to derived classes
private:
    int a, b; // Keep these variables private in A
};

class B : public A {
public:
    B() : A(0, 0) // Calls A's constructor, initializing a and b in A to 0.
    {
    }
};

Dengan menjadikan pembina kelas asas boleh diakses (dilindungi atau awam) dan memanggilnya dalam pembina kelas terbitan , kami memulakan pembolehubah ahli yang diwarisi dengan betul. Pendekatan ini memastikan bahawa kelas asas dimulakan dengan betul sebelum kod kelas terbitan dilaksanakan.

Perhatikan bahawa membuat pembolehubah ahli kelas asas awam dalam kelas terbitan (seperti dalam contoh yang salah) tidak disyorkan kerana ia memecahkan prinsip enkapsulasi, membenarkan akses luaran kepada data yang dilindungi atau peribadi.

Atas ialah kandungan terperinci Bagaimana untuk Memulakan Pembolehubah Ahli Kelas Asas dengan Betul 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