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

DDD
Lepaskan: 2024-10-25 07:57:02
asal
723 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!