Rumah >pembangunan bahagian belakang >C++ >Apakah Operasi yang Dibenarkan pada Objek Berpindah Dari Perpustakaan Standard dalam C?

Apakah Operasi yang Dibenarkan pada Objek Berpindah Dari Perpustakaan Standard dalam C?

DDD
DDDasal
2024-12-25 11:50:40310semak imbas

What Operations Are Permissible on Moved-From Standard Library Objects in C  ?

Operasi pada Moved-From Objects

Walaupun salah tanggapan umum bahawa dialih-dari objek hanya boleh dimusnahkan, piawaian C menentukan yang dipindahkan -daripada objek jenis perpustakaan standard diletakkan dalam keadaan yang tidak ditentukan, membenarkan skop operasi yang terhad. Keadaan ini timbul selepas objek dialihkan daripadanya, membolehkan operasi yang biasanya tidak mempunyai prasyarat.

Operasi Tanpa Syarat

Operasi berikut secara amnya boleh digunakan untuk dialih-dari objek tanpa bertemu prasyarat:

  • Pemusnahan: Mengagihkan memori objek.
  • Tugasan: Menetapkan objek yang dialihkan daripada sebagai nilai objek lain .
  • Pemerhatian berterusan: Mengakses maklumat seperti fungsi getter, saiz tatasusunan dan boolean kekosongan.

Operasi Bersyarat

Sebaliknya, operasi berikut mungkin memerlukan objek tidak dalam keadaan yang tidak ditentukan dan oleh itu secara amnya tidak dibenarkan untuk berpindah dari objek:

  • Dereference: Mengakses dalaman objek melalui penunjuk atau rujukan.
  • Mutasi: Membuat perubahan pada medan objek.

Mengenai std::swap

Dalam templat fungsi swap contoh, operasi penugasan (baris 2 dan 3) adalah sah walaupun melibatkan dialihkan daripada objek kerana tugasan secara amnya tidak mempunyai prasyarat.

Akhir sekali

Standard yang memperincikan objek keadaan tidak ditentukan untuk jenis perpustakaan standard terletak di 17.6.5.15 [lib.types.movedfrom].

Atas ialah kandungan terperinci Apakah Operasi yang Dibenarkan pada Objek Berpindah Dari Perpustakaan Standard dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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