Bilakah Pembina Salinan Ditakrifkan Pengguna Diperlukan?
Penyusun C secara automatik menjana pembina salinan untuk kelas, yang melaksanakan dari segi ahli menyalin secara lalai. Walau bagaimanapun, dalam situasi tertentu, kami mungkin perlu mentakrifkan pembina salinan takrif pengguna kami sendiri.
Sebab Untuk Menentukan Pembina Salin Takrif Pengguna:
Contoh:
Pertimbangkan kelas berikut yang menyimpan rentetan aksara:
<code class="cpp">class Class { public: Class(const char* str); ~Class(); private: char* stored; };</code>
Dengan pembina salinan lalai, ahli yang disimpan hanya akan disalin melalui rujukan, yang membawa kepada tingkah laku yang tidak ditentukan apabila salah satu salinan adalah musnah. Untuk mengelakkan ini, kami mentakrifkan pembina salinan takrif pengguna yang melakukan penyalinan dalam:
<code class="cpp">Class::Class(const Class& another) { stored = new char[strlen(another.stored) + 1]; strcpy(stored, another.stored); }</code>
Selain itu, pembina salinan takrif pengguna juga diperlukan untuk pengendali tugasan melaksanakan penyalinan dalam dengan betul:
<code class="cpp">void Class::operator = (const Class& another) { char* temp = new char[strlen(another.stored) + 1]; strcpy(temp, another.stored); delete[] stored; stored = temp; }</code>
Atas ialah kandungan terperinci Bilakah Anda Harus Melaksanakan Pembina Salinan Ditakrifkan Pengguna dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!