Pembina Salinan Ditakrifkan Pengguna dalam C
Dalam C , pengkompil biasanya menjana pembina salinan lalai untuk kelas, yang melaksanakan dari segi ahli meniru. Walau bagaimanapun, dalam senario tertentu, pembina salinan takrif pengguna diperlukan.
Bilakah pembina salinan takrif pengguna diperlukan?
Pembina salinan takrif pengguna adalah diperlukan apabila tingkah laku penyalinan ahli pembina salinan lalai tidak mencukupi. Pertimbangkan contoh berikut:
<code class="cpp">class Class { public: Class(const char* str); ~Class(); private: char* stored; }; Class::Class(const char* str) { stored = new char[srtlen(str) + 1]; strcpy(stored, str); } Class::~Class() { delete[] stored; }</code>
Dalam contoh ini, pembina salinan lalai hanya akan menyalin penuding kepada ahli yang disimpan, dan bukannya menduplikasi penimbal asas. Ini boleh membawa kepada tingkah laku yang tidak ditentukan jika satu salinan dimusnahkan sebelum yang lain.
Pembina Salinan Ditakrifkan Pengguna
Untuk menangani perkara ini, anda boleh menentukan salinan yang ditentukan pengguna pembina yang melakukan penyalinan dalam:
<code class="cpp">Class::Class(const Class& another) { stored = new char[strlen(another.stored) + 1]; strcpy(stored, another.stored); }</code>
Pembina salinan ini memperuntukkan memori baharu dan menyalin kandungan ahli yang disimpan, memastikan kedua-dua salinan mempunyai penimbal bebasnya sendiri.
Atas ialah kandungan terperinci Bilakah Pembina Salinan Ditakrifkan Pengguna Diperlukan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!