2016-05-27 3 views
0

Меня спрашивали в интервью. Кажется, у библиотеки есть что-то, называемое scoped_pointer. Не уверен, спросил ли он об этом.Что называется указателем области видимости в C++?

+0

"указатель" или "указатель области"? – user463035818

+0

Ну, указатель не может определить область видимости, поэтому scoped_ptr звучит как разумное предположение. –

+0

«Что называется указателем области видимости на C++?» - Это вопрос, который вы задавали дословно? Я предполагаю, что нет, и я бы предположил, что они спрашивали об умных указателях и RAII вообще (возможно, 'std :: unique_ptr' конкретно) ... –

ответ

2

У Boost есть scoped_ptr.

Повышения Docs

Основная причина для использования scoped_ptr вместо auto_ptr, чтобы позволить читателям вашего кода знать, что вы собираетесь «приобретение ресурсов является инициализация»> применяться только для текущей области, и не намерены передавать право собственности.

Вторая причина использования scoped_ptr заключается в том, чтобы не допустить, чтобы более поздний программник-программист мог добавить функцию, которая передает право собственности, возвращая auto_ptr, поскольку программа-программист увидела auto_ptr, и предполагаемое право собственности могло быть безопасно перенесено.

Подумайте о bool vs int. Мы все знаем, что под обложками bool обычно просто int. В самом деле, некоторые из них высказались против включения bool в стандарт C++ из-за этого. Но, кодируя bool, а не int, вы говорите своим читателям, каковы ваши намерения. То же самое с scoped_ptr; используя его, вы сигнализируете о намерениях.

Было высказано предположение, что scoped_ptr эквивалентен std :: auto_ptr const. Эд Брей отметил, однако, что сброс не будет работать на std :: auto_ptr const.

1

Термин, скорее всего, относится к категории C++ smart-pointers, которая обеспечивает управление владельцами областей для указателей.

Смежные вопросы