Melalui Penunjuk Dikongsi: Mengikut Rujukan atau Mengikut Nilai
Apabila menghantar shared_ptr (dari boost atau C 11 STL) ke fungsi, pilihan antara menghantarnya melalui rujukan const (void foo(const shared_ptr
Secara tradisinya, ia dipercayai bahawa lulus melalui rujukan akan menjadi lebih cepat kerana ia mengelakkan operasi penyalinan yang tidak perlu. Walau bagaimanapun, seperti yang dibincangkan oleh pakar di C and Beyond 2011 (Scott, Andrei, dan Herb), ini tidak lagi berlaku.
Adakah Anda Perlu Melewati Nilai atau Rujukan?
Melainkan terdapat keperluan eksplisit untuk berkongsi pemilikan objek (seperti antara struktur data atau urutan), tiada sebab yang kukuh untuk lulus shared_ptr mengikut nilai. Melewati rujukan const lebih disukai atas sebab berikut:
Bila Perlu Melepasi Nilai
Satu-satunya masa yang dinasihatkan untuk lulus shared_ptr mengikut nilai ialah apabila niatnya adalah untuk memindahkan pemilikan objek kepada fungsi. Ini biasanya berlaku apabila fungsi perlu bertanggungjawab mengurus seumur hidup objek.
Pertimbangan Tambahan
Untuk prestasi optimum, adalah penting untuk mempertimbangkan sama ada shared_ptr boleh dioptimumkan bergerak. Seperti yang dijelaskan oleh Scott Meyers, pengoptimuman bergerak boleh menghapuskan keperluan untuk operasi penyalinan yang tidak perlu. Walau bagaimanapun, pengoptimuman ini hanya tersedia dalam versi C tertentu.
Atas ialah kandungan terperinci Patutkah saya Lulus `shared_ptr` mengikut Nilai atau Rujukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!