Pass by Value vs Pass by Rvalue Rujukan
Memutuskan antara lulus dengan nilai atau lulus dengan rujukan rvalue untuk parameter fungsi bergantung pada beberapa faktor.
Pass by Value
-
(Widget w)
- Mencipta salinan parameter input, meninggalkan yang asal tidak berubah.
- Melibatkan operasi penyalinan tersirat, yang boleh menjadi tidak cekap untuk objek besar atau kompleks.
- Anggap pemilikan parameter, walaupun ia tidak mengubah suainya .
Lulus Rujukan Nilai R
-
(Widget&& w)
- Memulakan parameter secara paksa dengan nilai r (cth., objek sementara yang tamat tempoh), menghalang operasi penyalinan.
- Memerlukan pengisytiharan salinan yang jelas menggunakan std::move apabila pemanggil menginginkan salinan .
- Melumpuhkan sebarang perubahan dalam nilai pulangan yang ditunjukkan dalam salinan pemanggil.
Perbezaan Utama
-
Salin Pemilikan: Nilai lulus mandat bahawa parameter mesti disalin, manakala rujukan nilai lulus membenarkan fungsi untuk memindahkan parameter, menghapuskan panggilan pembina langkah tambahan dalam beberapa kes.
Memilih Kaedah yang Betul-
Gunakan nilai lulus apabila :
Fungsi ini memerlukan salinan atau versi diubah suai objek input.Objek input adalah kecil atau murah untuk disalin.
Gunakan pas dengan rujukan rnilai apabila:
- Fungsi perlu mengambil pemilikan dan mengubah suai objek input.
- Objek input adalah besar atau mahal untuk disalin.
Pemanggil tidak memerlukan salinan objek input.
Atas ialah kandungan terperinci Bila Memilih Lulus Mengikut Nilai vs Lulus dengan Rujukan Rnilai dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!