Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Jenis Terbina Dalam Tidak Mempamerkan Semantik Bergerak?

Mengapa Jenis Terbina Dalam Tidak Mempamerkan Semantik Bergerak?

Linda Hamilton
Linda Hamiltonasal
2024-11-10 01:06:02681semak imbas

Why Don't Built-In Types Exhibit Move Semantics?

Adakah Jenis Terbina Dalam 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.

Intipati Semantik Alih

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.

Kesesuaian untuk Jenis Terbina Dalam

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.

Peranan std::move

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.

Gelagat Selepas Alih

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.

Kesimpulan

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!

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