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
Lepaskan: 2024-12-06 09:14:10
asal
937 orang telah melayarinya

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan