Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memulakan Ahli Penunjuk Malar dalam Pembina C?

Bagaimana untuk Memulakan Ahli Penunjuk Malar dalam Pembina C?

DDD
DDDasal
2024-11-04 15:05:09157semak imbas

How to Initialize a Constant Pointer Member in a C   Constructor?

Memulakan Ahli Penunjuk Malar dalam Pembina C

Apabila bekerja dengan kelas dalam C , kita mungkin menghadapi situasi di mana kita perlu memulakan ahli penunjuk sebagai pemalar dalam pembina. Ini memastikan bahawa penuding kekal tidak berubah sepanjang hayat objek.

Pertimbangkan contoh kod berikut:

<code class="cpp">class Foo;

class Bar {
public:
    Foo * const foo;
    Bar(Foo* _foo) {
        foo = _foo;
    }
};</code>

Dalam kod ini, ahli foo ditandakan sebagai penuding malar. Walau bagaimanapun, kompilasi akan gagal kerana penuding foo ditetapkan dalam badan pembina, yang tidak dibenarkan untuk ahli tetap.

Kaedah Betul: Memulakan dalam Senarai Pemula

Cara yang betul untuk memulakan ahli penuding tetap adalah dengan berbuat demikian dalam senarai pemula ahli dalam badan pembina. Ini boleh dicapai seperti berikut:

<code class="cpp">class Bar {
public:
    Foo * const foo;
    Bar(Foo* _foo) : foo(_foo) {
    }
};</code>

Dengan memulakan foo dalam senarai pemula, pengkompil memastikan bahawa penuding diberikan nilainya sebelum pembina memasuki badannya. Ini memenuhi keperluan untuk ahli tetap dimulakan semasa pembinaan objek.

Dalam kod yang disemak, pembolehubah parameter masuk dinamakan semula kepada _foo untuk mengelakkan kekeliruan dengan ahli foo.

Dengan mengikuti ini pendekatan, anda boleh memulakan ahli penuding berterusan dalam pembina, memastikan bahawa nilai mereka kekal tidak berubah sepanjang objek kitaran hayat.

Atas ialah kandungan terperinci Bagaimana untuk Memulakan Ahli Penunjuk Malar dalam Pembina C?. 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