Adakah jenis terbina dalam mempamerkan semantik bergerak, dan jika ya, bagaimanakah mereka mentakrifkan gelagat selepas pergerakan?

Mary-Kate Olsen
Lepaskan: 2024-11-12 06:12:02
asal
966 orang telah melayarinya

Do built-in types exhibit move semantics, and if so, how do they define after-move behavior?

Adakah Jenis Terbina Dalam Memiliki Semantik Alih dan Tentukan Gelagat Selepas Alih?

Coretan kod yang disediakan menunjukkan pengubahsuaian yang jelas bagi binaan -in type (int) dalam fungsi yang menerima rujukan r-nilai kepadanya. Walau bagaimanapun, konsep "semantik bergerak" menimbulkan persoalan tentang kelakuan sebenar jenis terbina dalam dalam konteks ini.

Memahami Jenis Terbina Dalam dan Semantik Bergerak

Jenis terbina dalam, tidak seperti jenis yang ditentukan pengguna, tidak memiliki sumber atau mengurus ingatan mereka sendiri. Sebaliknya, mereka adalah sumber itu sendiri. Mengalihkan objek membayangkan pemindahan pemilikan sumbernya, yang tidak boleh digunakan untuk jenis terbina dalam kerana ia tidak mempunyai sumber luaran.

Kesan std::move on Jenis Terbina dalam

std::move mengubah nilai l menjadi nilai x, membenarkan ia terikat pada rujukan nilai r. Ia tidak mencetuskan mana-mana pembina atau menyebabkan sebarang tindakan masa jalan. Pada peringkat jenis, ia hanya mengubah suai kategori nilai.

Rujukan dan Pengubahsuaian Nilai

Rujukan Rnilai kekal sebagai rujukan, menyambung kepada objek asal. Apabila rujukan nilai-r dihantar kepada fungsi, fungsi itu boleh mengubah suai objek asal melalui rujukan. Inilah yang berlaku dalam contoh yang disediakan, di mana fungsi menambah int asal.

Tiada Pembina Pergerakan untuk Jenis Asas

Jenis asas, seperti int, kurang pergerakan pembina. Jika fungsi menerima jenis asas mengikut nilai, langkah itu merosot kepada salinan. Akibatnya, nilai objek asal disalin ke dalam parameter fungsi dan sebarang pengubahsuaian yang dibuat dalam fungsi tidak menjejaskan objek asal.

Tingkah Laku Yang Ditakrifkan dengan Baik untuk Jenis Terbina Dalam Selepas Pergerakan

Tingkah laku yang diperhatikan dalam contoh, di mana int asal diubah suai melalui rujukan nilai-r, ialah ditakrifkan dengan baik oleh piawaian C. Ia adalah hasil daripada kekurangan pembangun bergerak dan kefungsian rujukan nilai-r.

Kesimpulan

Walaupun jenis terbina dalam tidak mempunyai semantik bergerak dalam rasa tradisional, std::move boleh digunakan untuk mereka untuk membuat rujukan r-nilai. Rujukan nilai-r ini, apabila diserahkan kepada fungsi, membenarkan pengubahsuaian kepada objek asal. Walau bagaimanapun, jenis asas tidak mempunyai pembangun bergerak, jadi sebarang operasi "gerakan" pada mereka berkesan menjadi salinan. Tingkah laku jenis terbina dalam selepas perpindahan ditakrifkan dengan baik dan mengikut prinsip rujukan nilai-r dan kekurangan pembina pergerakan untuk jenis asas.

Atas ialah kandungan terperinci Adakah jenis terbina dalam mempamerkan semantik bergerak, dan jika ya, bagaimanakah mereka mentakrifkan gelagat selepas pergerakan?. 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