C++ menyediakan berbilang jenis penunjuk pintar untuk mengelakkan ralat memori: unique_ptr: mempunyai pemilikan tunggal sumber asas dan secara automatik mengeluarkan sumber apabila ia keluar dari skop. shared_ptr: telah berkongsi pemilikan sumber asas dan mengeluarkan sumber apabila shared_ptr terakhir dimusnahkan. weak_ptr: Mempunyai pemilikan lemah terhadap sumber asas dan tidak menghalang sumber daripada dikeluarkan, tetapi boleh menyemak dengan selamat sama ada sumber itu wujud. Memilih jenis penunjuk pintar bergantung pada keperluan pemilikan: unique_ptr untuk pemilikan unik, shared_ptr untuk pemilikan dikongsi dan weak_ptr untuk mengendalikan penunjuk berjuntai.
Jenis penunjuk pintar dan perbezaannya dalam C++
Dalam C++, penunjuk pintar ialah objek ringan yang merangkum penunjuk mentah dan melepaskannya secara automatik apabila penunjuk asal keluar dari skop. Penunjuk pintar membantu mengelakkan ralat seperti kebocoran memori dan penunjuk berjuntai.
Pustaka standard C++ menyediakan beberapa jenis penunjuk pintar, setiap satu dengan tujuan dan semantik uniknya sendiri. Berikut ialah jenis utama penunjuk pintar:
Contoh Praktikal
Pertimbangkan coretan kod berikut:
// unique_ptr 示例 { unique_ptr<string> str = make_unique<string>("Hello"); cout << *str << endl; // 输出: Hello } // str 超出作用域并释放 "Hello"
Dalam contoh ini, unique_ptr
确保在 str
melepaskan rentetan "Hello" apabila ia keluar dari skop.
Perbezaan
Berikut ialah ringkasan perbezaan utama antara pelbagai jenis penunjuk pintar:
Ciri | unique_ptr | _ptrweshare | |
---|---|---|---|
Dikongsi | Lemah | pemindahan | |
disokong | tidak disokong | skop | |
tidak menghalang mentah penunjuk daripada dilepaskan | Keselamatan | Paling selamat | |
Kurang selamat | Memilih titik pintar yang tepat |
Atas ialah kandungan terperinci Apakah jenis penunjuk pintar C++ dan perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!