Dalam C , pembina salinan lalai disediakan secara automatik oleh pengkompil jika tidak ditakrifkan secara eksplisit oleh pengguna . Memahami gelagatnya adalah penting, terutamanya apabila kelas mengandungi objek lain tanpa pembina salinan yang diisytiharkan sendiri.
Pertimbangkan hierarki kelas berikut:
class Foo { Bar bar; }; class Bar { int i; Baz baz; }; class Baz { int j; };
Apabila mencipta contoh Foo menggunakan pembina salinan:
Foo f1; Foo f2(f1);
Tingkah laku berikut akan berlaku:
Nota: Pembina salinan yang dijana pengkompil melakukan salinan cetek, menyalin penunjuk ahli, yang bersamaan dengan salinan bitwise.
Tingkah laku ini memastikan salinan dalam semua objek bersarang dilakukan, selagi setiap ahli mempunyai sahnya sendiri pembina salinan. Ini membantu mengelakkan penunjuk berjuntai atau isu pemilikan objek.
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa jika mana-mana objek bersarang tidak mempunyai pembina salinan yang ditentukan atau mempunyai masalah dalam pelaksanaan pembina salinan mereka sendiri, pengkompil menghasilkan pembina salinan mungkin gagal melaksanakan salinan dalam dengan betul, yang membawa kepada potensi isu integriti data.
Atas ialah kandungan terperinci Adakah Pembina Salinan Dijana Pengkompil Menjamin Penyalinan Dalam dalam Kelas Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!