Apakah Operasi yang Dibenarkan pada Moved-From Objects?
Standard C mentakrifkan kelakuan objek yang telah dialihkan daripadanya. Pengetahuan ini penting untuk memahami bagaimana fungsi tertentu, seperti std::swap, berfungsi.
Definisi Standard
Mengikut standard (bahagian 17.6.5.15), objek dari jenis perpustakaan standard C boleh dialihkan dan kemudiannya diletakkan dalam "sah tetapi tidak ditentukan keadaan."
Implikasi untuk Operasi
Apabila objek berada dalam keadaan tidak ditentukan, anda boleh melakukan sebarang operasi yang tidak mempunyai prasyarat. Operasi tanpa syarat termasuk:
Walau bagaimanapun, operasi dengan prasyarat secara amnya tidak boleh dilakukan tanpa pemeriksaan lanjut. Contohnya:
Contoh: std::swap
The std: : fungsi swap, seperti yang ditunjukkan dalam soalan asal, memerlukan penugasan kepada objek yang dialihkan. Ini mungkin kerana tugasan ialah operasi tanpa syarat.
Nota Tambahan: T c = std::move(a) vs. T c(std::move(a))
Dalam pelaksanaan std::swap, tugasan pindah langsung T c = std::move(a) digunakan dan bukannya pembina salinan T c(std::move(a)). Ini dilakukan untuk mengelakkan salinan a yang tidak diperlukan, yang akan mengakibatkan penalti prestasi.
Atas ialah kandungan terperinci Apa yang Boleh Anda Lakukan dengan Objek Bergerak-Dari dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!