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
479 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!

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