Seperti yang saya lihat, smart pointer digunakan secara luas di banyak proyek C ++ dunia nyata.
Meskipun beberapa jenis pointer cerdas jelas bermanfaat untuk mendukung RAII dan transfer kepemilikan, ada juga kecenderungan menggunakan pointer bersama secara default , sebagai cara "pengumpulan sampah" , sehingga pemrogram tidak harus memikirkan alokasi sebanyak itu. .
Mengapa pointer bersama lebih populer daripada mengintegrasikan pengumpul sampah yang tepat seperti Boehm GC ? (Atau apakah Anda setuju sama sekali, bahwa mereka lebih populer daripada GC yang sebenarnya?)
Saya tahu dua keunggulan GC konvensional dibandingkan penghitungan referensi:
- Algoritma GC konvensional tidak memiliki masalah dengan siklus referensi .
- Referensi-hitungan umumnya lebih lambat dari GC yang tepat.
Apa alasan untuk menggunakan smart pointer penghitungan referensi?
std::unique_ptr
sudah cukup dan karena itu memiliki overhead nol atas pointer mentah dalam hal kinerja run-time. Dengan menggunakan distd::shared_ptr
mana - mana Anda juga akan mengaburkan semantik kepemilikan, kehilangan salah satu manfaat utama dari pointer pintar selain manajemen sumber daya otomatis - pemahaman yang jelas tentang maksud di balik kode.