Kesahihan Objek Dipindah-daripada dalam C 11
Apabila objek dialihkan dari dalam C 11, keadaannya menjadi tidak ditentukan, menimbulkan persoalan tentang operasi yang boleh dilakukan ke atasnya selepas itu. Walaupun jenis perpustakaan standard dialihkan ke keadaan yang sah tetapi tidak ditentukan, jenis tersuai memerlukan takrifan eksplisit untuk menentukan keadaan sahnya selepas dialihkan daripadanya.
Dalam kes objek pimpl, di mana pelaksanaannya tersembunyi di sebalik penunjuk, persoalan timbul: apakah yang boleh dilakukan dengan objek Foo apabila penunjuk pimplnya telah dialihkan? Semasa memusnahkan atau menugaskan semula objek yang dialihkan daripada tetap selamat, percubaan operasi seperti do_stuff akan gagal kerana penunjuk pimpl telah menjadi tidak sah.
Reka bentuk standard menggalakkan pendekatan konservatif dengan membenarkan keadaan yang tidak ditentukan untuk objek yang dialihkan daripada mendayakan pelaksanaan yang cekap merentas perpustakaan yang berbeza. Ini memerlukan pertanyaan tentang keadaan objek sebelum melakukan operasi padanya, tugas yang boleh memperkenalkan overhed prestasi, terutamanya dalam senario dengan kekerapan operasi pergerakan yang tinggi.
Untuk mengelakkan keperluan untuk pertanyaan sedemikian, jenis tersuai boleh nyatakan keadaan sahnya dengan jelas selepas dialihkan daripada. Sebagai contoh, kelas pimpl boleh mengisytiharkan bahawa beralih daripadanya menyebabkan do_stuff tidak sah dengan tingkah laku yang tidak ditentukan. Pendekatan ini memastikan bahawa pengguna sedar tentang kemungkinan akibat berpindah dari objek dan boleh mengelakkan kemungkinan ralat.
Perlu diingat bahawa dialih-dari objek masih mesti memenuhi keperluan mana-mana konsep yang ditakrifkan oleh perpustakaan standard, yang tidak mengambil kira berpindah dari negeri. Oleh itu, jenis tersuai yang tidak mengekalkan keadaan sah seperti yang ditakrifkan oleh konsep yang berkaitan tidak boleh digunakan dengan pustaka standard tanpa mempertaruhkan tingkah laku yang tidak ditentukan.
Atas ialah kandungan terperinci Apakah yang Boleh Anda Lakukan dengan Objek Bergerak-Dari dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!