Pelaksanaan Penuding Pintar C Mana Yang Wujud dan Bagaimana Ia Membandingkan?
Dalam C , penunjuk pintar ialah kelas pembalut yang mengurus seumur hidup objek yang diperuntukkan secara dinamik, menyediakan penyerahan peruntukan memori automatik apabila ia tidak lagi diperlukan. Pelbagai pelaksanaan petunjuk pintar tersedia, masing-masing mempunyai kekuatan dan kelemahan tersendiri.
C 03 Pelaksanaan
-
std::auto_ptr: Kemudahan pengumpulan sampah terhad yang memiliki objek yang ditunjuk tetapi tidak boleh disalin atau digunakan dalam bekas STL. Ia telah ditamatkan dalam standard C.
-
std::auto_ptr_ref: Butiran reka bentuk yang digunakan dengan std::auto_ptr untuk membenarkan penyalinan dan tugasan dalam situasi tertentu.
C 11 Pelaksanaan
-
std::unique_ptr: Menggantikan std::auto_ptr, dengan penambahbaikan utama untuk pengendalian tatasusunan, perlindungan nilai dan keserasian STL. Ia memberikan pemilikan eksklusif penuding.
-
std::shared_ptr: Membungkus penunjuk pintar yang dikira rujukan di sekeliling objek yang diperuntukkan secara dinamik, membenarkan pemilikan dikongsi. Ia menyokong keselamatan benang dan mengendalikan jenis yang tidak lengkap.
-
std::weak_ptr: Rujukan bukan milik kepada objek dengan std::shared_ptr. Ia tidak menghalang pemadaman objek tetapi boleh mendapatkan semula std::shared_ptr jika masih sah. Ia digunakan untuk mengelakkan kiraan rujukan kitaran.
Peningkatan Pelaksanaan
-
boost::shared_ptr: Rujukan- penunjuk pintar dikira digunakan secara meluas kerana serba boleh.
-
boost::weak_ptr: Rujukan bukan milik kepada boost::shared_ptr, serupa dengan C 11.
-
boost:: scoped_ptr: Penunjuk pintar ringan tanpa semantik salinan, setanding dengan std::unique_ptr.
-
boost::intrusive_ptr: Direka bentuk untuk mencipta kelas serasi penunjuk pintar tersuai dengan pengiraan rujukan tersuai dan keselamatan benang.
-
boost:: shared_array: Rangsangan::shared_ptr untuk tatasusunan, menyediakan tatasusunan ciri manipulasi seperti operator[] dan padam[].
-
boost::scoped_array: Rangsangan::scoped_ptr untuk tatasusunan, dengan fungsi tatasusunan yang dipanggang tetapi tidak boleh disalin.
Qt Pelaksanaan
-
QPointer: Penunjuk pintar "lemah" untuk QObject dan kelas terbitan, yang menyemak kesahihan objek sebelum mengakses tetapi mempunyai had dalam persekitaran berbilang benang.
-
QSharedDataPointer: Penunjuk pintar "kuat" yang memerlukan pelaksanaan pengiraan rujukan dan tidak atomic.
-
QExplicitlySharedDataPointer: Serupa dengan QSharedDataPointer, tetapi membenarkan kawalan ke atas masa untuk menanggalkan objek yang ditunjuk.
-
QSharedPointer: Rujukan atom -penunjuk pintar dikira dengan keselamatan benang, pemadaman tersuai dan keserasian dengan boost::shared_ptr.
-
QWeakPointer: Rujukan bukan milik kepada QSharedPointer, sama dengan std::weak_ptr.
-
QScopedPointer: Berdasarkan on boost::scoped_ptr, menyediakan penunjuk pintar pemilik tunggal untuk pengecualian keselamatan dan keserasian.
Atas ialah kandungan terperinci Apakah Pelaksanaan Penunjuk Pintar C Wujud, dan Bagaimanakah Ia Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!