Rumah > pembangunan bahagian belakang > C++ > Mengapa Adakah `std::move` Berfungsi pada Objek Malar dalam C ?

Mengapa Adakah `std::move` Berfungsi pada Objek Malar dalam C ?

Barbara Streisand
Lepaskan: 2024-11-15 09:02:02
asal
195 orang telah melayarinya

Why Does `std::move` Work on Constant Objects in C  ?

Mengapa Kita Boleh Panggil std::move on a const Object?

C 11 memperkenalkan fungsi std::move untuk menyokong semantik bergerak. Ini menimbulkan persoalan: mengapa std::move boleh digunakan pada objek malar?

Jika kita cuba mengalihkan objek malar, nampaknya kita cuba mengubahnya, yang tidak masuk akal. Walau bagaimanapun, std::move dengan bijak sebenarnya tidak menggerakkan apa-apa. Sebaliknya, ia mengarahkan pengkompil untuk cuba mengalihkan objek.

Jika kelas objek mempunyai pembina bergerak, pergerakan akan berlaku seperti yang dijangkakan. Tetapi jika kelas tidak, pengkompil sebaliknya akan menggunakan pembina salinan, memastikan objek tetap disalin dengan selamat.

Sebagai contoh:

struct Cat {
  Cat() {}
};

const Cat cat;
Cat cat2 = std::move(cat);
Salin selepas log masuk

Dalam kes ini, std ::move akan kembali kepada pembina salinan, mencetak "COPY" dan bukannya "MOVE" jika std::cout ditambahkan pada pembina.

std:: gelagat pergerakan pada objek malar bukanlah perangkap , tetapi ciri. Ia membolehkan percubaan bergerak yang cekap tanpa mempertaruhkan kestabilan program. Selain itu, tidak semua kod bergantung pada semantik bergerak, jadi membenarkan std::move untuk beroperasi pada objek malar memberikan fleksibiliti.

Atas ialah kandungan terperinci Mengapa Adakah `std::move` Berfungsi pada Objek Malar dalam C ?. 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