Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bilakah Senarai Permulaan Pembina Kelas Kanak-Kanak Boleh Digunakan untuk Memulakan Ahli Data Dilindungi?

Bilakah Senarai Permulaan Pembina Kelas Kanak-Kanak Boleh Digunakan untuk Memulakan Ahli Data Dilindungi?

Linda Hamilton
Linda Hamiltonasal
2024-10-24 13:59:02670semak imbas

When Can the Initialization List of a Child Class Constructor Be Used to Initialize Protected Data Members?

Senarai Permulaan dan Permulaan Ahli Dilindungi

Dalam pengaturcaraan berorientasikan objek menggunakan C , adalah amalan biasa bagi kelas untuk mewarisi daripada kelas induk dan meluaskan fungsinya. Walau bagaimanapun, persoalan timbul: bolehkah senarai permulaan bagi pembina kelas kanak-kanak digunakan untuk memulakan ahli data yang diisytiharkan sebagai dilindungi dalam kelas induk?

Dalam percubaan untuk mencapai ini, seseorang mungkin mempunyai kod yang serupa dengan berikut:

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

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

Walau bagaimanapun, percubaan ini akan mengakibatkan ralat pengkompil, yang menunjukkan bahawa kelas Child tidak mempunyai medan yang dinamakan sesuatu. Ini kerana sesuatu ahli data diisytiharkan sebagai dilindungi dalam kelas induk.

Untuk memulakan ahli yang dilindungi menggunakan senarai permulaan kelas anak, pendekatan alternatif diperlukan. Pembina dengan permulaan yang diperlukan boleh ditambah pada kelas induk, dan pembina ini kemudiannya boleh dipanggil daripada pembina kelas kanak-kanak. Ini boleh dicapai melalui pemajuan pembina:

<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 kod yang diubah suai ini, pembina yang dilindungi ditambahkan pada kelas Induk dan ia memerlukan parameter rentetan. Pembina kelas Kanak-kanak kemudian memanggil pembina dilindungi kelas Induk menggunakan pemajuan pembina untuk menghantar hujah yang diperlukan dan memulakan sesuatu ahli data.

Atas ialah kandungan terperinci Bilakah Senarai Permulaan Pembina Kelas Kanak-Kanak Boleh Digunakan untuk Memulakan Ahli Data Dilindungi?. 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