Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Ahli Kelas Ibu Bapa Dilindungi Dimulakan melalui Senarai Permulaan Kelas Kanak-kanak?

Bolehkah Ahli Kelas Ibu Bapa Dilindungi Dimulakan melalui Senarai Permulaan Kelas Kanak-kanak?

DDD
DDDasal
2024-10-25 06:07:02751semak imbas

Can Protected Parent Class Members Be Initialized via Child Class's Initialization List?

Memulakan Ahli Data Dilindungi Kelas Induk dalam Senarai Permulaan Kelas Kanak-kanak

Dalam pengaturcaraan berorientasikan objek, kelas terbitan boleh mewarisi ciri daripada kelas asas mereka . Satu soalan yang sering timbul ialah sama ada mungkin untuk memulakan ahli data dilindungi kelas induk menggunakan senarai pemulaan pembina kelas anak.

Pertimbangkan contoh kod berikut:

<code class="cpp">class Parent {
protected:
    std::string something;
};

class Child : public Parent {
private:
    Child() : something("Hello, World!")
    {
    }
};</code>

Apabila cuba menyusun kod ini, pengkompil melemparkan ralat, menyatakan bahawa kelas "Kanak-kanak" tidak mengandungi ahli data bernama "sesuatu." Ini kerana senarai permulaan hanya dibenarkan untuk memulakan ahli data dalam kelas anak itu sendiri.

Untuk mencapai kefungsian yang diingini, perlu menambah pembina kepada kelas induk yang menerima nilai awal yang diingini dan memajukannya kepada ahli data kelas asas. Contohnya:

<code class="cpp">class Parent {
protected:
    Parent(const std::string& something) : something(something)
    {}

    std::string something;
};

class Child : public Parent {
private:
    Child() : Parent("Hello, World!")
    {
    }
};</code>

Dalam kes ini, pembina kelas "Ibu bapa" memulakan ahli data yang dilindungi "sesuatu" apabila dipanggil daripada senarai permulaan kelas anak. Oleh itu, kelas anak mewarisi ahli data "sesuatu" yang dimulakan daripada kelas induknya.

Atas ialah kandungan terperinci Bolehkah Ahli Kelas Ibu Bapa Dilindungi Dimulakan melalui Senarai Permulaan Kelas Kanak-kanak?. 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