В настоящее время я пытаюсь понять, когда использовать реальные объекты, необработанные указатели и умные указатели. В следующем примере, что лучше всего использовать или каждый шаг? Допустим, я создаю и загружаю в файл изображения, который я хочу использовать для многих объектов, но я не хочу продолжать загружать его из пути, используя библиотеку загрузки изображений каждый раз, когда создается объект. Таким образом, загружается одно изображение, и несколько объектов могут ссылаться на него. Изображение также должно быть доступно без каких-либо ссылок на него до конца программы. Сами объекты либо живут вечно, либо, если его объект частицы, например, удаляется после того, как его жизнь равна 0, без удаления изображения. Благодарю.
Бьярне Страуструп рекомендует использовать умные указатели только в крайнем случае. Его рекомендации (от лучших к худшим):
Простые указатели предназначены только для ссылки на объекты, которыми он не владеет (владелец уничтожает объект). То же самое относится и к ссылкам, хотя ссылки на const
и ссылки на r-значения могут продлить время жизни временного.
Увидеть Бьярне Страуструп — Сущность C ++: с примерами на C ++ 84, C ++ 98, C ++ 11 и C ++ 14 в 0:37:40.
Других решений пока нет …