Cara Melepasi Parameter dengan Betul
Dalam C, teknik hantaran parameter adalah penting untuk mengekalkan integriti dan prestasi objek. Di bawah ialah jawapan kepada soalan anda dan amalan terbaik untuk lulus parameter:
Amalan Terbaik untuk Lulus Parameter
Mengendalikan Pergerakan dan Salinan
Dalam contoh yang diberikan, penggunaan CreditCard&& dalam pembina tidak betul. Rujukan Rvalue tidak boleh terikat pada lnilai seperti cc. Untuk mengelakkan ralat, pertimbangkan untuk mencipta lebihan pembina untuk nilai l dan nilai:
Account(std::string number, float amount, CreditCard const& creditCard) : number(number), amount(amount), creditCard(creditCard) // Copy for lvalues { } Account(std::string number, float amount, CreditCard&&& creditCard) : number(number), amount(amount), creditCard(std::move(creditCard)) // Move for rvalues { }
Menggunakan Penerusan Sempurna
Untuk senario yang lebih kompleks, std::forward biasanya digunakan untuk pemajuan yang sempurna dalam templat:
template<typename C> Account(std::string number, float amount, C&&& creditCard) : number(number), amount(amount), creditCard(std::forward<C>(creditCard)) { }
Ini membolehkan pembina untuk secara automatik menentukan sama ada untuk melakukan pergerakan atau menyalin berdasarkan jenis yang disimpulkan untuk C.
Dengan mematuhi amalan terbaik ini, anda boleh memastikan lulus parameter yang betul dan mengelakkan isu prestasi atau ralat yang berkaitan dengan pengubahsuaian atau penyalinan objek yang tidak diingini.
Atas ialah kandungan terperinci Bagaimana untuk Melepasi Parameter dengan Betul dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!