Як я бачу, розумні покажчики широко використовуються у багатьох реальних проектах C ++.
Хоча якісь розумні покажчики, очевидно, вигідні для підтримки RAII та передачі права власності, також існує тенденція використання спільних покажчиків за замовчуванням як способу "вивезення сміття" , так що програмісту не доведеться думати про те, щоб розподілити стільки .
Чому спільні покажчики популярніші, ніж інтеграція належного сміттєзбірника, як Boehm GC ? (Або ти взагалі згоден, що вони популярніші, ніж фактичні ГК?)
Я знаю про дві переваги звичайних ГК перед підрахунком довідок:
- Звичайні алгоритми GC не мають проблем з еталонними циклами .
- Підрахунок посилань, як правило, повільніше, ніж власний GC.
Які причини використання інтелектуальних покажчиків для підрахунку довідок?
std::unique_ptr
достатньо, і як таке має нульові накладні витрати над необробленими покажчиками з точки зору продуктивності роботи. Використовуючиstd::shared_ptr
всюди, ви також затемнюєте семантику власності, втрачаючи одну з головних переваг розумних покажчиків, крім автоматичного управління ресурсами - чітке розуміння наміру коду.