Fungsi std::move(x) sebenarnya tidak menggerakkan apa-apa dari segi data fizikal. Ia pada asasnya adalah pelakon kepada nilai r, khususnya nilai x. Pemutus ini boleh membawa kepada kekeliruan, jadi adalah penting untuk memahami tujuan yang dimaksudkan di sebalik konvensyen penamaan.
Konsep asal pemindahan bermula sejak cadangan langkah awal pada tahun 2002. Cadangan ini memperkenalkan rujukan nilai dan menunjukkan cara untuk tulis std::swap yang lebih cekap. Pada masa itu, satu-satunya makna yang dikaitkan dengan "&&" adalah logik dan, jadi kaedah yang lebih mudah dibaca diperlukan untuk menyampaikan maksud fungsi tersebut.
Daripada menggunakan "cast_to_rvalue" atau nama yang serupa, pembangun memilih "bergerak" untuk menyerlahkan tujuan pelakon: untuk membolehkan semantik bergerak. Konvensyen penamaan ini membantu menjelaskan maksud kod tanpa memasukkan butiran teknikal tentang kategori nilai.
Hari ini, pengaturcara C journeyman harus sedar bahawa std::move pada asasnya adalah lakonan, manakala pengaturcara pemula boleh memahaminya tujuannya adalah untuk berpindah dari sumber dan bukannya menyalin daripadanya. Pembangun lain boleh melaksanakan kefungsian serupa di bawah nama yang berbeza jika dikehendaki, menunjukkan bahawa std::move tidak mempunyai monopoli pada ciri ini.
Dari segi kod objek yang dijana, std::move tidak mempunyai kesan ke atas perkara remeh. objek bergerak. Walau bagaimanapun, untuk objek dengan pengendali tugasan pergerakan tersuai, std::move boleh mempengaruhi beban yang dipanggil, yang berpotensi mengakibatkan peningkatan prestasi.
Secara keseluruhannya, penamaan std::move sebagai "move" berfungsi sebagai pedagogi. tujuan, menekankan tujuan fungsi dan bukannya pelaksanaan teknikalnya.
Atas ialah kandungan terperinci Mengapakah std::move dinamakan std::move walaupun sebenarnya tidak memindahkan data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!