Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Kita Boleh Padamkan Penunjuk pada Objek Malar?

Mengapa Kita Boleh Padamkan Penunjuk pada Objek Malar?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-04 04:32:02982semak imbas

Why Can We Delete a Pointer to a Constant Object?

Memadamkan Penunjuk kepada Pemalar (T const*)

Seseorang mungkin tertanya-tanya mengapa seseorang dibenarkan memanggil pemusnah bukan const a kelas melalui penunjuk const. Lagipun, penunjuk const bertujuan untuk mengelakkan pengubahsuaian pada objek asas. Walau bagaimanapun, pemadaman penuding const pada objek tidak mengubah suai objek itu sendiri.

Sebab utama membenarkan pemadaman penunjuk const adalah untuk menyokong pemadaman objek const. Berikut ialah contoh:

<code class="cpp">const Foo *f = new Foo; // dynamically create object that cannot be changed</code>

Dalam senario ini, objek yang ditunjuk oleh f dicipta secara dinamik dan tidak boleh diubah suai kerana ia adalah objek const. Walau bagaimanapun, penunjuk const membolehkan kami mengakses fungsi ahli const objek. Apabila kami selesai dengan objek, kami perlu memadamkannya:

<code class="cpp">delete f; // delete it</code>

Tanpa keupayaan untuk memadamkan penunjuk const, kami tidak akan dapat menggunakan objek const yang dicipta secara dinamik dengan cara sedemikian.

Adalah penting untuk ambil perhatian bahawa peraturan ini digunakan bukan sahaja untuk objek const yang dicipta secara dinamik tetapi juga untuk objek const yang diperuntukkan pada tindanan:

<code class="cpp">{
 const Foo f; // const object on the stack
 // use it
} // destructor called here</code>

Jika pemusnah tidak boleh dipanggil pada objek const, kami tidak boleh menggunakan objek const sama sekali. Keupayaan ini memberikan fleksibiliti yang diperlukan untuk mengurus objek const dengan berkesan dalam C .

Atas ialah kandungan terperinci Mengapa Kita Boleh Padamkan Penunjuk pada Objek Malar?. 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