Rumah > pembangunan bahagian belakang > C++ > Apakah Kesahan dan Operasi yang Dibenarkan pada Objek Bergerak-Daripada dalam C 11?

Apakah Kesahan dan Operasi yang Dibenarkan pada Objek Bergerak-Daripada dalam C 11?

Linda Hamilton
Lepaskan: 2024-12-06 09:34:12
asal
473 orang telah melayarinya

What are the Validity and Allowable Operations on Moved-From Objects in C  11?

Kesahihan Objek Dipindah-Dari dalam C 11

Memahami kesahihan objek yang dialih-dari dalam C 11 boleh menjadi rumit. Artikel ini bertujuan untuk menjelaskan konsep, terutamanya dalam konteks objek pimpl.

Moved-From Objects

Apabila objek dialihkan, keadaannya menjadi tidak ditentukan. Pustaka standard mentakrifkan kriteria kesahihan untuk jenis perpustakaan standard, memastikan objek yang dialihkan daripada diletakkan dalam keadaan yang sah tetapi tidak ditentukan. Walau bagaimanapun, untuk jenis tersuai, adalah menjadi tanggungjawab pembangun untuk mentakrif dan mendokumentasikan keadaan sah dan operasi yang dibenarkan untuk dialihkan daripada objek.

Contoh: Pimpl Idiom

Dalam contoh idiom pimpl, ahli impl_ menunjuk kepada peruntukan dinamik. Selepas operasi bergerak, penunjuk dalam objek alih-dari ditetapkan kepada nullptr. Ini menjadikan kaedah do_stuff() tidak sah, kerana ia cuba menyahrujuk penuding impl_.

Invariant vs. Valid State

Invarian yang objek Foo sentiasa boleh lakukan_stuff () tidak lagi sah selepas dipindahkan dari. Secara amnya, objek alih-daripada mungkin tidak memenuhi semua invarian yang digunakan pada rakan sejawatannya yang tidak dialihkan.

Pilihan 1: Operasi Ditanda

Satu pilihan ialah menyemak secara eksplisit jika penunjuk impl_ adalah nullptr dalam do_stuff() dan mulakannya jika perlu. Walau bagaimanapun, ini memperkenalkan potensi overhed prestasi.

Pilihan 2: Tentukan Keadaan Tidak Sah

Sebagai alternatif, kod boleh menentukan secara eksplisit bahawa objek yang dialihkan daripada Foo berada dalam keadaan tidak sah nyatakan dan bahawa memanggil do_stuff() pada mereka akan menghasilkan a ralat.

Konsep dan Dipindah-Dari Objek

Adalah penting untuk ambil perhatian bahawa konsep yang ditakrifkan oleh perpustakaan standard tidak menganggap dialih-daripada objek. Untuk memenuhi keperluan konsep, pindah-daripada objek jenis tersuai mesti masih memenuhi keperluan konsep.

Kesimpulan

Memahami kesahihan objek pindah-daripada adalah penting untuk melaksanakan semantik bergerak dengan betul. Pembangun harus mempertimbangkan dengan teliti implikasi operasi bergerak pada keadaan objek mereka dan menentukan tingkah laku yang diharapkan dengan sewajarnya.

Atas ialah kandungan terperinci Apakah Kesahan dan Operasi yang Dibenarkan pada Objek Bergerak-Daripada dalam C 11?. 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