Bila Menggunakan Pelbagai Jenis Penunjuk dalam C
Dalam C , pelbagai jenis penunjuk tersedia untuk mengurus pemilikan objek dan sepanjang hayat. Artikel ini memberikan panduan tentang memilih jenis penunjuk yang sesuai untuk senario yang berbeza, termasuk pemilikan dikongsi, pemilikan unik dan bukan pemilikan.
Pemilikan Dikongsi:
- std::shared_ptr: Gunakan apabila berbilang objek perlu berkongsi pemilikan sumber dan tidak jelas objek mana yang akan menjadi yang terakhir menggunakannya.
-
std::weak_ptr: Gunakan untuk memerhati sumber tanpa mempengaruhi hayatnya. Elakkan menggunakannya untuk memecahkan kitaran rujukan antara shared_ptrs.
Pemilikan Unik:
-
std::unique_ptr: Lalai pilihan untuk penunjuk pintar di mana satu objek memiliki sumber. Ia membenarkan penyesuaian pemadaman objek melalui hujah templat pemadam.
-
boost::intrusive_ptr: Pilihan yang ringan apabila sumber sudah menawarkan pengurusan yang dikira rujukan.
Tidak Pemilikan:
-
Petunjuk Mentah (T*): Gunakan untuk rujukan bukan pemilikan kepada sumber yang diketahui hidup lebih lama daripada objek rujukan atau untuk kebolehbatalan dan kebolehtetapan semula.
-
Rujukan: Diutamakan untuk tidak batal, tidak memiliki rujukan kepada sumber.
Nota Tambahan:
-
std::auto_ptr: Ditamatkan dalam C 11; digantikan dengan std::unique_ptr.
-
Boost::shared_array dan boost::scoped_array: Alternatif kepada std::unique_ptr dan std::unique_ptr, masing-masing.
- Untuk senario pelaksanaan serentak, expired() hendaklah digunakan dengan berhati-hati untuk mengelakkan keadaan perlumbaan semasa menyemak keaktifan sumber:
if(!wptr.expired()) {
// Potential race condition
something_assuming_the_resource_is_still_alive();
}
Salin selepas log masuk
Atas ialah kandungan terperinci Jenis Penuding C Mana Yang Perlu Saya Gunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!