Rumah > pembangunan bahagian belakang > C++ > Mengapa Saya Tidak Boleh Memulakan Medan `const` dalam Pembina Secara Terus dalam C ?

Mengapa Saya Tidak Boleh Memulakan Medan `const` dalam Pembina Secara Terus dalam C ?

Susan Sarandon
Lepaskan: 2024-11-03 12:50:31
asal
211 orang telah melayarinya

Why Can't I Initialize a `const` Field in a Constructor Directly in C  ?

Memulakan Medan Konst dalam Pembina

Apabila menentukan kelas dengan medan const yang mesti kekal tidak berubah sepanjang hayat objek, adalah penting untuk memulakan ia dengan betul. Pertimbangkan senario berikut:

Pernyataan Masalah:

Anda ingin mencipta Bar kelas C yang menerima penuding Foo sebagai input dan mengekalkan rujukan tidak berubah kepadanya dalam seumur hidup. Kod berikut gagal untuk disusun:

<code class="cpp">class Foo;

class Bar {
public:
    Foo * const foo;
    Bar(Foo* foo) {
        this->foo = foo;
    }
};

class Foo {
public:
  int a;
};</code>
Salin selepas log masuk

Penyelesaian:

Untuk memulakan medan const dengan betul dalam pembina, anda perlu menggunakan senarai pemula:

<code class="cpp">Bar(Foo* _foo) : foo(_foo) {
}</code>
Salin selepas log masuk

Perhatikan bahawa kami telah menamakan semula parameter masuk kepada _foo untuk mengelakkan konflik nama.

Pendekatan ini memastikan bahawa penuding foo dimulakan sebaik sahaja objek Bar dibina dan ia kekal tidak berubah untuk tempoh kitaran hayatnya.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memulakan Medan `const` dalam Pembina Secara Terus dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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