Rumah > pembangunan bahagian belakang > C++ > Apa yang Boleh Anda Lakukan dengan Objek Bergerak-Dari dalam C ?

Apa yang Boleh Anda Lakukan dengan Objek Bergerak-Dari dalam C ?

Susan Sarandon
Lepaskan: 2024-12-25 12:03:09
asal
566 orang telah melayarinya

What Can You Do with a Moved-From Object in C  ?

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:

  • Pemusnahan
  • Tugasan
  • Pemerhati berterusan (cth., dapatkan, kosong, saiz)

Walau bagaimanapun, operasi dengan prasyarat secara amnya tidak boleh dilakukan tanpa pemeriksaan lanjut. Contohnya:

  • Dereference
  • pop_back

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!

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