Perbezaan antara "=default" dan "{}" untuk Pembina Lalai dan Pemusnah
Dalam C , pembina lalai dan pemusnah adalah istimewa fungsi ahli yang dijana secara automatik oleh pengkompil jika tidak ditakrifkan secara eksplisit oleh pengguna. Walau bagaimanapun, untuk senario tertentu, ia menjadi perlu untuk mengatasi gelagat lalai ini, menimbulkan persoalan sama ada "=default" dan "{}" menawarkan kefungsian yang sama.
Jika a kelas memerlukan pemusnah maya tetapi pelaksanaannya adalah sama dengan versi yang dihasilkan pengkompil, sintaks "= lalai" boleh digunakan. Ia memastikan bahawa pengkompil menjana pemusnah maya tanpa memerlukan definisi yang jelas. Sebaliknya, menggunakan takrifan kosong "maya ~Widget() {}" mencapai kesan yang sama, dengan penaipan minimum.
Tidak seperti pemusnah, kesan "=default " untuk pembina lalai adalah berbeza dengan ketara daripada "{}." Apabila menggunakan "Widget() = lalai," pengkompil secara automatik menjana pembina lalai untuk kelas "Widget." Pembina yang dijana ini berkelakuan seolah-olah tiada pembina ditakrifkan oleh pengguna. Akibatnya, ia menyumbang ke arah menjadikan kelas sebagai "jenis remeh" dalam terminologi C 11.
Sebaliknya, "Widget() {}" mencipta pembina lalai yang disediakan pengguna, yang menghalang kelas daripada dianggap remeh. C 11 meletakkan sekatan pada jenis remeh, membenarkan operasi seperti memcpy untuk permulaan yang cekap.
Untuk pemusnah maya, "=default" dan "{}" berkelakuan serupa. Walau bagaimanapun, untuk pembina lalai, "=default" menjana pembina lalai yang disediakan pengkompil, manakala "{}" mencipta yang disediakan pengguna, yang berpotensi menjejaskan perkara remeh kelas. Pilihan antara "=default" dan "{}" untuk pembina lalai hendaklah berdasarkan tingkah laku yang diingini dan implikasi untuk perkara remeh kelas.
Atas ialah kandungan terperinci Pembina dan Pemusnah Lalai dalam C : Bilakah Saya Harus Menggunakan '=default' vs '{}'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!