Rumah > pembangunan bahagian belakang > C++ > Apakah Keadaan Sah Objek Berpindah-daripada dalam C 11 dan Bagaimana Mentakrifkannya?

Apakah Keadaan Sah Objek Berpindah-daripada dalam C 11 dan Bagaimana Mentakrifkannya?

Barbara Streisand
Lepaskan: 2024-12-01 18:14:11
asal
384 orang telah melayarinya

What are the Valid States of Moved-from Objects in C  11 and How to Define Them?

Memahami Keadaan Sah untuk Alih-dari Objek dalam C 11

Alihkan semantik dalam C 11 memperkenalkan konsep penting: keadaan objek selepas sedang dipindahkan dari. Walau bagaimanapun, syarat tepat yang mesti dipenuhi oleh objek yang dialihkan daripadanya boleh mengelirukan.

Isu dengan Objek pimpl

Pertimbangkan simpulan bahasa pimpl, di mana kelas membungkus penunjuk kepada objek pelaksanaan. Jika kita bergerak dari objek Foo (mengandungi std::unique_ptr), apakah yang boleh kita lakukan dengan objek itu selepas itu?

  • Memusnahkan atau menetapkannya adalah selamat.
  • Memanggil fungsi ahli (melalui penuding pelaksanaan) adalah bermasalah, kerana ia mungkin merujuk kepada yang dipadamkan objek.

Perpustakaan Standard Dipindah-dari Negeri

Piawaian C mentakrifkan bahawa dialih-dari objek jenis perpustakaan standard diletakkan dalam "tidak ditentukan tetapi sah negeri." Ini bermakna anda boleh melakukan operasi pada mereka yang mempunyai prasyarat yang sah.

Walau bagaimanapun, untuk jenis bukan standard, anda mesti menentukan dan mendokumenkan keadaan sah dan operasi yang dibenarkan selepas dialihkan daripadanya.

Mentakrifkan Keadaan Sah untuk pimpl

Dalam contoh Foo, kita boleh menentukan bahawa berpindah daripadanya menjadikan fungsi do_stuff tidak sah. Ini akan menghalang kita daripada menggunakan secara tidak sengaja pada objek yang dialihkan daripada.

Mengelakkan Peruntukan Dinamik

Untuk mengelakkan overhed peruntukan dinamik semasa menyemak keadaan sah, pertimbangkan menggunakan corak "objek nol". Ini melibatkan mempunyai FooImpl lalai yang digunakan apabila objek berada dalam keadaan tidak sah.

Konsep dan Dipindah-dari Objek

Akhir sekali, ambil perhatian bahawa dialih-daripada objek mesti masih memenuhi keperluan konsep perpustakaan standard. Jika jenis anda tidak kekal dalam keadaan yang sah, menggunakannya dengan fungsi pustaka standard boleh mengakibatkan tingkah laku yang tidak ditentukan.

Atas ialah kandungan terperinci Apakah Keadaan Sah Objek Berpindah-daripada dalam C 11 dan Bagaimana Mentakrifkannya?. 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