Rumah > pembangunan bahagian belakang > C++ > Apakah Pelaksanaan Penunjuk Pintar C Wujud, dan Bagaimanakah Ia Berbeza?

Apakah Pelaksanaan Penunjuk Pintar C Wujud, dan Bagaimanakah Ia Berbeza?

Mary-Kate Olsen
Lepaskan: 2024-11-28 01:51:14
asal
245 orang telah melayarinya

What C   Smart Pointer Implementations Exist, and How Do They Differ?

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!

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