Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Tidak Boleh Memulakan Medan `const` dalam Pembina Secara Terus dalam 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>
Penyelesaian:
Untuk memulakan medan const dengan betul dalam pembina, anda perlu menggunakan senarai pemula:
<code class="cpp">Bar(Foo* _foo) : foo(_foo) { }</code>
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!