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

Linda Hamilton
Lepaskan: 2024-10-24 13:59:02
asal
669 orang telah melayarinya

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

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

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!

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
Artikel terbaru oleh pengarang
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!