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!