Rumah > Artikel > pembangunan bahagian belakang > Mengapa Jenis Terbina Dalam Tidak Mempamerkan Semantik Bergerak?
Kod yang disediakan menunjukkan tingkah laku yang tidak dijangka di mana nombor integer jenis terbina dalam diubah suai dalam fungsi Func, walaupun walaupun ia diluluskan sebagai rujukan r-nilai menggunakan std::move. Tingkah laku ini bercanggah dengan pemahaman umum bahawa std::move memindahkan pemilikan dan sumber.
Semantik Alih merujuk kepada pemindahan pemilikan dan sumber daripada satu objek ke objek lain. Dalam konteks ini, sumber ialah nilai data atau memori yang diperuntukkan kepunyaan objek.
Jenis terbina dalam, seperti integer, sendiri mewakili sumber yang mereka tahan. Oleh itu, tidak masuk akal untuk memindahkan pemilikan sumber mereka. Sebaliknya, mereka hanya menghantar rujukan kepada objek, membenarkan pengubahsuaian dicerminkan dalam objek asal.
std::move sebenarnya tidak menggerakkan objek . Tujuannya adalah untuk menukar rujukan nilai-l (rujukan kepada objek dengan lokasi yang ditentukan) kepada rujukan nilai-x (rujukan kepada objek yang telah tamat tempoh). Penukaran ini membenarkan rujukan untuk mengikat rujukan r-value dalam fungsi penerima.
Selepas menggunakan std::move pada objek jenis terbina dalam, rujukan itu diluluskan kepada fungsi masih merujuk kepada objek asal. Sebarang pengubahsuaian yang dibuat pada objek ditunjukkan dalam yang asal.
Tidak seperti jenis yang ditentukan pengguna, yang boleh menentukan semantik pergerakan tersuai, jenis terbina dalam tidak mempunyai gelagat sedemikian. std::move tidak menggunakan mana-mana pembangun bergerak atau pengendali tugasan untuk jenis terbina dalam. Sebaliknya, ia hanya menghantarnya ke rujukan r-nilai untuk tujuan mengikat. Tingkah laku ini ditakrifkan dengan baik oleh standard C dan menerangkan pengubahsuaian num yang tidak dijangka dalam contoh kod yang diberikan.
Atas ialah kandungan terperinci Mengapa Jenis Terbina Dalam Tidak Mempamerkan Semantik Bergerak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!