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