Mengapa Kita Boleh Padamkan Penunjuk kepada Objek Malar (T const*) dalam C ?

Linda Hamilton
Lepaskan: 2024-11-03 18:27:02
asal
142 orang telah melayarinya

Why Can We Delete a Pointer to a Constant Object (T const*) in C  ?

Memadamkan Penunjuk kepada Konst (T const*)

Mengapakah mungkin untuk memadamkan penuding kepada objek malar (const T* p) menggunakan "padam p", walaupun pemusnah adalah ahli bukan const fungsi?

Penjelasan

Sebab membenarkan pemadaman penuding kepada const adalah terutamanya untuk menyokong penggunaan objek const dalam pengurusan memori dinamik. Pertimbangkan senario berikut:

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

// use const member functions here

// delete it
delete f;</code>
Salin selepas log masuk

Dalam contoh ini, objek yang ditunjuk oleh "f" tidak boleh diubah suai kerana penetapan constnya. Walau bagaimanapun, pemusnah "Foo" masih perlu dipanggil untuk memadamkan objek ini. Membenarkan "padam" digunakan pada penunjuk const memastikan bahawa pemusnah akan digunakan, memastikan pembersihan yang betul.

Adalah penting untuk ambil perhatian bahawa tingkah laku ini melangkaui objek yang dicipta secara dinamik. Walaupun untuk objek yang ditakrifkan dalam skop tempatan, pemusnah mesti dipanggil apabila skop dikeluarkan, tanpa mengira keteguhan objek. Contohnya:

<code class="cpp">{
 const Foo f;
 // use it
} // destructor called here</code>
Salin selepas log masuk

Jika pemusnah tidak dibenarkan dipanggil pada objek const, adalah mustahil untuk menggunakan objek const dengan berkesan. Oleh itu, keupayaan untuk memadamkan penunjuk kepada const adalah penting untuk mengekalkan integriti bahasa dan prinsip berorientasikan objeknya.

Atas ialah kandungan terperinci Mengapa Kita Boleh Padamkan Penunjuk kepada Objek Malar (T const*) 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!