Rumah > pembangunan bahagian belakang > C++ > Bila Memilih Lulus Mengikut Nilai vs Lulus dengan Rujukan Rnilai dalam C ?

Bila Memilih Lulus Mengikut Nilai vs Lulus dengan Rujukan Rnilai dalam C ?

Barbara Streisand
Lepaskan: 2024-10-24 05:00:31
asal
713 orang telah melayarinya

When to Choose Pass by Value vs Pass by Rvalue Reference in C  ?

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!

    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