2016-12-17 8 views
1

Так умные указатели являются не только классами, которые обертывают сырой указатель, только объект содержит деструктор, который вызывает удалениеC++ интеллектуальных указатели

если это точное есть ли причина для использования традиционных сырья указателей? Всегда ли удобнее использовать интеллектуальные указатели?

+2

Ну, иногда вам нужна переменная, которая * не * вызывает 'delete', когда она выходит из области видимости. –

+2

Ну, вы, очевидно, должны использовать необработанные указатели для реализации интеллектуальных указателей. –

ответ

1

Умные указатели имеют определенные накладные расходы. Если вам не нужны функциональные возможности, предлагаемые интеллектуальным указателем (автоматическое управление памятью через RAII), то просто придерживайтесь использования необработанных указателей. Помните, что сами исходные указатели не обязательно являются плохими, исходными указателями являются собственные ресурсы. Для владения требуется явно delete -ион. Мы этого не хотим.

+1

@Downvoter Могу ли я получить комментарий, почему? –

+1

std :: unique_ptr специально спроектирован так, чтобы быть нулевым. Конечно, это единственный умный указатель с этим свойством. Но накладные расходы на интеллектуальные указатели - это то, что вам нужно было бы написать себе, чтобы иметь поведение интеллектуального указателя. – rubenvb

+1

@rubenvb Однако инициализация 'unique_ptr' по умолчанию инициализируется простым указателем. – juanchopanza

2

Умные указатели - одна из форм управления ресурсами. Есть и другие, которые могут быть более уместными. Например, для графического объекта с памятью объектов (т. Е. Ни один из объектов не содержит ресурс без памяти любой формы), используя выделение на арену и освобождение арены более эффективно: оно имеет намного меньшие накладные расходы и значительно быстрее освободить, особенно если объекты не обязательно горячие в кеше. Графики объектов, поддерживаемые на арене, связаны с помощью указателей raw.

Умные указатели - один из многих инструментов для управления ресурсами. Они, как правило, злоупотребляют людьми, не знающими других инструментов. Конечно, это обычная картина: для тебя, кто только владеет молотом, все выглядит как гвоздь!