Rumah >pembangunan bahagian belakang >C++ >Patutkah Pass-by-Value Menjadi Lalai untuk Objek Besar dalam C Moden?
Memikirkan Semula Pass-by-Value dalam C 11
Dalam dunia C , pass-by-value secara tradisinya tidak digalakkan untuk besar objek kerana kebimbangan prestasi. Walau bagaimanapun, pengenalan rujukan Rvalue dan alihkan pembina dalam C 11 membuka kemungkinan baharu untuk menghantar objek dengan cekap.
Adakah Pass-by-Value Kini Default Terbaik?
Menurut pakar industri Dave Abrahams, adalah wajar untuk melepasi objek besar seperti std::vector dan std::string mengikut nilai jika anda perlu membuat salinan dalam badan fungsi. Ini membolehkan pengkompil melakukan pengoptimuman, menghapuskan keperluan untuk penyalinan eksplisit oleh pengaturcara.
Kelebihan:
Objek Tersuai:
Untuk objek tersuai, pass-by -rujukan kepada const masih merupakan pilihan yang berdaya maju, kerana ia memberikan fleksibiliti dan meminimumkan risiko mengubah suai asal secara tidak sengaja objek.
Amalan Terbaik:
Contoh:
Untuk melaksanakan corak yang disyorkan, pembina bernilai boleh ditulis seperti berikut:
class T { U u; V v; public: T(U u, V v) : u(std::move(u)) , v(std::move(v)) {} };
Atas ialah kandungan terperinci Patutkah Pass-by-Value Menjadi Lalai untuk Objek Besar dalam C Moden?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!