Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melaksanakan Pembina Salin dengan Betul untuk Kelas dengan Ahli `unique_ptr`?

Bagaimana untuk Melaksanakan Pembina Salin dengan Betul untuk Kelas dengan Ahli `unique_ptr`?

Susan Sarandon
Susan Sarandonasal
2024-12-03 20:30:15939semak imbas

How to Properly Implement a Copy Constructor for a Class with a `unique_ptr` Member?

Melaksanakan Pembina Salinan untuk Kelas dengan Ahli Unique_Ptr

Pertimbangkan kelas dengan pembolehubah ahli jenis std::unique_ptr, yang mewakili pemilikan unik sumber. Apabila membuat salinan objek dengan ahli sedemikian, anda perlu mengendalikan aspek pemilikan unik dengan betul.

Dalam C 11, terdapat dua pendekatan:

  1. Salin Dalam Kandungan Penunjuk Unik:
    Dalam kelas A yang disediakan, pembina salinan (A(const A& a)) dilaksanakan untuk mencipta salinan mendalam kandungan penunjuk unik. Memandangkan penunjuk unik tidak boleh dikongsi, ia mencipta objek int baharu dan memulakannya dengan nilai yang ditunjuk oleh penuding unik asal.
  2. Tukar Penunjuk Unik kepada Penunjuk Dikongsi:
    Sebagai alternatif , anda boleh menukar penuding unik kepada penuding kongsi (cth., std::shared_ptr) menggunakan pembina penukaran tersuai. Penunjuk yang dikongsi membenarkan berbilang pemilik, menjadikannya sesuai untuk disalin.

Move Constructor and Operators:

Daripada pembina salinan, anda boleh menggunakan pembina bergerak (A(A&& a)) yang memindahkan pemilikan penunjuk unik daripada objek sumber kepada objek baharu. Ini memerlukan penggunaan std::move secara eksplisit untuk menjadikan ahli boleh alih.

Untuk mengendalikan tugasan dengan betul, adalah penting untuk mempunyai operator tugasan (operator=) yang sama ada melakukan salinan dalam atau memindahkan sumber.

Pertimbangan Tambahan:

Apabila bekerja dengan kelas yang mengandungi unik penunjuk dalam bekas (cth., std::vector), anda perlu memutuskan sama ada bekas itu akan mempunyai pemilikan eksklusif atau jika objek boleh disalin secara bebas. Jika pemilikan eksklusif dikehendaki, buat pembina bergerak sahaja dan elakkan mentakrifkan pembina salinan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pembina Salin dengan Betul untuk Kelas dengan Ahli `unique_ptr`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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