Я был несколько удивлен, обнаружив, что std::shared_ptr
не обеспечивает защиты (например, генерирует исключение) от ситуаций, когда его указанный объект каким-либо образом удален. Я полагаю, что это из соображений производительности; если предположить, что shared_ptr
выполняет свою работу, объект, на который указывает shared_ptr
, никогда не должен был быть удален, так что было бы глупо тратить время на постоянную проверку.
Я знаю, что могу явно проверить, действителен ли shared_ptr
, но если shared_ptr
"выполняет свою работу" по поддержанию времени жизни объекта, было бы излишним явно проверять каждый раз, когда я касаюсь shared_ptr
.
Итак, мой вопрос: насколько я должен быть осторожен в свете этого? Есть ли «практическое правило» относительно того, как часто, или когда я должен проверять shared_ptr
?
Мой лучший вывод на данный момент будет имитировать Java: всякий раз, когда вам передают ссылку на объект в Java, который вы не создали, вы должны проверить его на null
. Будет ли это хорошая политика для shared_ptr
?