Rumah > pembangunan bahagian belakang > C++ > Mengapakah std::move dinamakan std::move walaupun sebenarnya tidak memindahkan data?

Mengapakah std::move dinamakan std::move walaupun sebenarnya tidak memindahkan data?

Patricia Arquette
Lepaskan: 2024-11-24 06:07:14
asal
561 orang telah melayarinya

Why is std::move named std::move despite not actually moving data?

Mengapa std::move dinamakan std::move?

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan