Rumah >pembangunan bahagian belakang >C++ >Pembina dan Pemusnah Lalai dalam C : Bilakah Saya Harus Menggunakan '=default' vs '{}'?

Pembina dan Pemusnah Lalai dalam C : Bilakah Saya Harus Menggunakan '=default' vs '{}'?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-06 09:14:10948semak imbas

Default Constructors and Destructors in C  : When Should I Use

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.

Default Destructors

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.

Pembina Lalai

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.

Kesimpulan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn