Melaksanakan Pembina Salinan untuk Kelas dengan Ahli Unique_ptr
Apabila bekerja dengan kelas yang mengandungi pembolehubah ahli unique_ptr, pelaksanaan salinan pembina menjadi penting. Ini boleh dicapai dengan mempertimbangkan dua pendekatan: menyalin kandungan dalam-dalam atau menukar unique_ptr kepada shared_ptr.
Pendekatan Salin Dalam
Untuk menyalin kandungan secara mendalam unique_ptr, anda boleh mencipta unique_ptr baharu dan tetapkan nilai yang asal kepadanya. Ini memastikan bahawa objek baharu mempunyai pemilikan eksklusif datanya sendiri. Berikut ialah contoh:
class A { std::unique_ptr<int> up_; public: A(int i) : up_(new int(i)) {} A(const A& a) : up_(new int(*a.up_)) {} };
Penukaran kepada Pendekatan Shared_ptr
Sebagai alternatif, anda boleh menukar unique_ptr kepada shared_ptr, membolehkan berbilang objek berkongsi pemilikan data. Setelah pemilikan dikongsi diwujudkan, anda boleh menetapkannya kepada unique_ptr baharu. Pendekatan ini boleh berguna apabila bekerja dengan berbilang objek yang perlu berkongsi data yang sama.
Move Constructor
Daripada melaksanakan pembina salinan, anda boleh mempertimbangkan untuk menggunakan gerakkan pembina. Pembina bergerak secara eksplisit memindahkan ahli dari objek sumber ke objek sasaran. Berikut ialah contoh:
A(A&& a) : up_(std::move(a.up_)) {}
Pendekatan ini menganggap bahawa kelas anda boleh dialihkan dan membolehkan pemindahan pemilikan yang cekap antara objek.
Set Operator Lengkap
Lazimnya, kelas dengan ahli_ptr unik juga harus menyertakan tugasan salinan dan memindahkan pengendali tugasan untuk mengendalikan pengurusan data dengan betul. Pengendali ini memastikan peruntukan sumber dan pengendalian pemilikan yang betul apabila menetapkan satu objek kepada yang lain.
Pertimbangan Tambahan untuk Vektor
Jika kelas anda dengan ahli_ptr unik digunakan dalam std ::vector, anda perlu memutuskan sama ada vektor harus mempunyai pemilikan unik atau membenarkan berbilang salinan. Memaksa semantik bergerak sahaja dengan mengelakkan pembina salinan dan operator tugasan salinan membantu pengkompil membimbing penggunaan kelas anda dalam std::vector dengan jenis bergerak sahaja.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pembina Salinan untuk Kelas dengan Ahli `unique_ptr`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!