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
332 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!

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