Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Kelas Kanak-kanak Memulakan Ahli Ibu Bapa yang Dilindungi Melalui Senarai Permulaan?

Bolehkah Kelas Kanak-kanak Memulakan Ahli Ibu Bapa yang Dilindungi Melalui Senarai Permulaan?

DDD
DDDasal
2024-10-25 07:57:02724semak imbas

Can Child Classes Initialize Protected Parent Members Through Initialization Lists?

Memulakan Ahli Ibu Bapa Dilindungi dalam Senarai Permulaan Kelas Kanak-kanak

Apabila mewarisi kelas dengan ahli data yang dilindungi, mungkin wajar untuk memulakan mereka menggunakan senarai permulaan anak pembina kelas. Walau bagaimanapun, pendekatan ini selalunya membawa kepada ralat penyusunan.

Dalam contoh ini:

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

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

Menyusun kod ini akan mengakibatkan ralat, kerana kelas anak Child tidak mempunyai ahli yang menamakan sesuatu .

Untuk menyelesaikan masalah ini, kelas induk Induk mesti mentakrifkan pembina yang memulakan sesuatu ahli yang dilindungi. Pembina ini boleh diisytiharkan dilindungi, membenarkan kelas terbitan mengaksesnya.

Kod yang diubah suai di bawah akan berjaya disusun:

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

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

Dalam kod yang diubah suai ini, pembina yang dilindungi dalam kelas Induk memajukan hujah pemula kepada sesuatu ahli, membolehkan kelas kanak-kanak memulakan ahli dilindungi ibu bapa semasa pemulaannya sendiri.

Dengan mengikuti sintaks ini, menjadi mungkin untuk memulakan ahli induk yang dilindungi menggunakan senarai permulaan kelas anak, menyediakan kawalan dan fleksibiliti yang lebih besar dalam pemulaan objek merentas hierarki warisan.

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