Rumah >pembangunan bahagian belakang >C++ >Adakah Jenis Terbina Dalam Menyokong Menggerakkan Semantik?
Semantik Rujukan Nilai dan Jenis Terbina dalam
Dalam kod contoh yang disediakan, jenis terbina dalam, iaitu pembolehubah integer, ialah dihantar ke fungsi Func sebagai rujukan nilai-r (&&). Output menunjukkan bahawa nilai integer diubah suai dalam fungsi.
Timbul persoalan: Adakah jenis terbina dalam mempunyai semantik bergerak, dan adakah tingkah laku yang diperhatikan ditakrifkan dengan baik?
Memindahkan Jenis Terbina dalam
Menggerakkan objek memerlukan pemindahan pemilikan sumber daripada satu objek ke yang lain. Memandangkan jenis terbina dalam adalah sumber itu sendiri, pemindahan sumber mereka adalah tidak praktikal. Contoh, walau bagaimanapun, menunjukkan bahawa nilai pembolehubah sememangnya diubah suai, mencadangkan ia adalah sumber yang diubah.
Memahami Peranan std::move
std:: bergerak memainkan peranan tertentu: ia menukar nilai l (pembolehubah) kepada nilai x, membenarkan ia terikat kepada rujukan r-nilai. Ia tidak mencetuskan sebarang pembina atau tindakan masa jalan; perubahan kategori nilai berlaku semata-mata pada peringkat jenis.
Kelakuan Rujukan Rnilai
Rujukan Rnilai, walaupun namanya, masih merupakan rujukan yang menghala ke objek asal. Dalam kes ini, fungsi menambah pembolehubah asal melalui rujukan yang disediakan.
Apabila fungsi menerima parameter melalui rujukan (berbanding dengan nilai), tiada salinan atau pergerakan berlaku; objek asal dirujuk terus.
Gerakan Semantik dan Jenis Asas
Jenis asas, seperti integer, kekurangan pembina bergerak. Dalam keadaan ini, pergerakan merosot menjadi salinan. Contoh menunjukkan tingkah laku ini, kerana nilai integer diubah suai melalui salinan dan bukannya pergerakan sebenar.
Ringkasnya, manakala jenis terbina dalam tidak mempunyai semantik pergerakan khusus, tingkah laku yang diperhatikan untuk mengubah suai pembolehubah integer adalah sah kerana std::move membenarkan pengikatan nilai-r tanpa menggunakan pembangun atau pergerakan bergerak.
Atas ialah kandungan terperinci Adakah Jenis Terbina Dalam Menyokong Menggerakkan Semantik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!