std::auto_ptr
| Определено в заголовочном файле <memory>
|
||
template< class T > class auto_ptr; |
(1) | (устарело в C++11) (удалено в C++17) |
template<> class auto_ptr<void>; |
(2) | (устарело в C++11) (удалено в C++17) |
auto_ptr это умный указатель, который управляет объектом, полученным с помощью выражения new, и удаляет этот объект при уничтожении самого auto_ptr. Данный указатель можно использовать для обеспечения безопасности исключений для динамически создаваемых объектов, для передачи владения динамически созданными объектами в функции и для возвращения динамически созданных объектов из функций.
Копирование auto_ptr копирует указатель и передаёт владение объекту назначения: конструктор копирования и операция присваивания копированием auto_ptr изменяют правый аргумент операции, таким образом "копия" становится не равной оригиналу. Из-за этой необычной семантики копирования auto_ptr не может быть помещён в стандартные контейнеры. Для этих и других целей предпочтительнее использовать std::unique_ptr (начиная с C++11).
void, она объявляет определение типа element_type, но не содержит функций-элементов.Типы-элементы
| Тип элемент | Определение |
element_type
|
T
|
Функции-элементы
создаёт новый auto_ptr (public функция-элемент) | |
уничтожает auto_ptr и управляемый объект (public функция-элемент) | |
передаёт право владения другому auto_ptr (public функция-элемент) | |
| преобразует управляемый указатель в указатель на другой тип (public функция-элемент) | |
Наблюдатели | |
| возвращает указатель на управляемый объект (public функция-элемент) | |
| обращается к управляемому объекту (public функция-элемент) | |
Модификаторы | |
| заменяет управляемый объект (public функция-элемент) | |
| освобождает право владения управляемым объектом (public функция-элемент) | |