Rumah > pembangunan bahagian belakang > C++ > Apakah Perbezaan Antara '=default' dan '{}' untuk Pembina Lalai dan Pemusnah dalam C ?

Apakah Perbezaan Antara '=default' dan '{}' untuk Pembina Lalai dan Pemusnah dalam C ?

Linda Hamilton
Lepaskan: 2024-12-07 04:47:10
asal
550 orang telah melayarinya

What's the Difference Between

Memahami Perbezaan antara "=default" dan "{}" untuk Default Constructor and Destructor

Sementara "=default" dan "{ }" mungkin kelihatan boleh ditukar ganti untuk pembina lalai dan pemusnah, terdapat perbezaan utama apabila mempertimbangkan pemusnah bukan maya dan pembina.

Pemusnah Bukan Maya

Apabila berurusan dengan pemusnah bukan maya, sintaks "=default" memainkan peranan penting. Ia mengarahkan pengkompil untuk menjana pemusnah secara automatik seperti yang dilakukan untuk kelas remeh, menjadikan jenis itu dianggap remeh. Sebaliknya, "{}" mencipta pemusnah yang disediakan pengguna, mengubah status remeh kelas.

Pembina Bukan Maya

Begitu juga, untuk bukan -pembina maya, menggunakan "=default" membolehkan pengkompil menjana pembina lalai, mengekalkan perkara remeh. Walau bagaimanapun, "{}" menentukan pembina yang disediakan pengguna, yang berpotensi memberi kesan kepada remeh kelas.

Kelas Trivial

Dalam C 11, kelas remeh ialah kelas yang tidak tidak mempunyai sebarang fungsi ahli khas yang disediakan pengguna (pembina lalai, salin/pindah pembina/tugasan, pemusnah). Fungsi ini dijana secara automatik, membolehkan pengoptimuman seperti memcpy digunakan.

Contoh

Pertimbangkan kod berikut:

struct Trivial
{
  int foo;
};

struct NotTrivial
{
  int foo;

  NotTrivial() {}
};

struct Trivial2
{
  int foo;

  Trivial2() = default;
};
Salin selepas log masuk
  • Trivial adalah remeh kerana ia tidak mempunyai ahli khas yang disediakan pengguna fungsi.
  • NotTrivial bukanlah remeh kerana ia mempunyai pembina lalai yang disediakan pengguna.
  • Trivial2 adalah remeh walaupun ia mempunyai pembina yang ditandakan sebagai "=default", kerana ini masih menggunakan pengkompil pembina lalai generasi.

Kesimpulan

Walaupun "=default" dan "{}" mungkin kelihatan serupa, mereka boleh mempunyai implikasi yang besar untuk remeh kelas apabila digunakan dengan pemusnah atau pembina bukan maya. "=default" mengekalkan tingkah laku lalai pengkompil dan mengekalkan perkara remeh, manakala "{}" mencipta fungsi yang disediakan pengguna dan berpotensi mengubah status remeh kelas.

Atas ialah kandungan terperinci Apakah Perbezaan Antara '=default' dan '{}' untuk Pembina Lalai dan Pemusnah dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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