Melalui Nilai: Mencipta salinan baharu hujah; yang asal kekal tidak berubah.
Melalui nilai Rujukan: Mengubah suai objek asal; memerlukan identiti (lvalue) yang stabil.
Melalui nilai Rujukan kepada Const: Memerhati objek asal tanpa mengubah suainya; menerima kedua-dua nilai l dan nilai r.
Melalui nilai Rujukan: Mengikat nilai r (sementara atau bergerak-daripada objek); boleh melakukan operasi bergerak.
Gunakan Rujukan lvalue untuk Pengubahsuaian:
Apabila fungsi perlu mengubah suai objek asal, lalui rujukan lvalue (& ).
Gunakan Rujukan lnilai kepada Const untuk Pemerhatian:
Untuk fungsi yang hanya memerhatikan keadaan objek, lalukan rujukan lvalue kepada const (const &).
Pertimbangkan Passing by Value untuk Jenis Bukan Intensif Salin :
Jika salinan adalah murah (cth., integer, aksara), pertimbangkan untuk lewat nilai.
Lebihan beban untuk Nilai L dan Rnilai (jika perlu):
Buat lebihan beban berasingan jika perpindahan mahal terlibat dan anda ingin mengelakkan perpindahan daripada nilai l.
Gunakan Pemajuan Sempurna untuk Pengendalian Generik:
Gunakan templat fungsi dan std::forward untuk menentukan secara automatik sama ada hendak menyalin atau memindahkan berdasarkan jenis argumen (rvalue/lvalue).
Kelas Kad Kredit: Pertimbangkan untuk membebankan pembina secara berlebihan dengan dua versi:
CreditCard(CreditCard const& other); // lvalue reference to copy CreditCard(CreditCard&& other); // rvalue reference to move
Kelas Akaun dengan Kad Kredit Ahli:
Gunakan salah satu daripada pembina berikut berdasarkan gelagat yang diingini:
Account(std::string number, float amount, CreditCard const& creditCard); // Copy Account(std::string number, float amount, CreditCard&& creditCard); // Move
Kelas Akaun dengan Vektor Ahli Akaun:
Lulus melalui rujukan atau rujukan const, bergantung pada sama ada pengubahsuaian dijangkakan.
Client(std::string firstName, std::string lastName, std::vector<Account> accounts); // Reference for modification Client(std::string firstName, std::string lastName, std::vector<const Account> accounts); // Reference to const for observation
Atas ialah kandungan terperinci Bagaimana Memilih Mekanisme Lulus Parameter yang Betul dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!