Bertentangan dengan namanya, std::move tidak menggerakkan apa-apa secara fizikal; sebaliknya, ia menghantar objek kepada rujukan rnilai atau, lebih khusus, nilai x. Keputusan untuk menamakan pergerakan fungsi bukan untuk menipu atau mengelirukan tetapi untuk menjadikan kod lebih mudah dibaca.
Pada peringkat awal rujukan nilai, fungsi std::swap perlu dioptimumkan untuk prestasi. Kaedah asal menggunakan static_cast
Dengan memperkenalkan std::move, hantaran eksplisit telah digantikan dengan gula sintaks yang menekankan maksud kod: untuk mendayakan semantik pindah. Menjelaskan butiran teknikal yang tepat, seperti "cast to rvalue," akan menimbulkan soalan tambahan, mengaburkan perkara utama.
Sejarah std:: move kembali kepada cadangan untuk rujukan rvalue pada tahun 2002. Fungsi move pada mulanya diperkenalkan sebagai gula sintaks untuk static_cast
Apabila bahasa C berkembang, konsep rnilai telah diperhalusi ke dalam apa yang kita ketahui hari ini sebagai kategori nilai . Menggunakan nama yang berbeza, seperti cast_to_xvalue, untuk menerangkan dengan lebih tepat operasi mungkin telah menghalang kebolehbacaan.
Pada intinya, std::move hanya membuang objek kepada nilai x. Cast ini tidak mempunyai kesan pada objek mudah alih yang remeh dan untuk objek dengan pengendali tugasan bergerak, ia memastikan bahawa pengendali tugasan alih dipanggil dan bukannya pengendali tugasan salinan.
Dari segi kod objek yang dijana, std:: bergerak tidak mempunyai kesan untuk objek mudah alih yang remeh. Untuk objek dengan pengendali tugasan bergerak, ia boleh mengubah resolusi beban lampau. Walau bagaimanapun, pada masa larian, std::move secara berkesan hilang dan kesannya hanya pada masa penyusunan.
Atas ialah kandungan terperinci Mengapakah `std::move` Dipanggil `std::move` jika ia Tidak Menggerakkan Apa-apa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!