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 предоставлена, она объявляет typedef element_type, но не содержит функций-членов.В документации используется дополнительный шаблон класса auto_ptr_ref. Это определяемый реализацией тип, который хранит ссылку на auto_ptr. Реализация может предоставить шаблону другое имя или реализовать функции, возвращающие его или принимающие его как параметр, другими способами.
Типы членов
| Тип члена | Определение |
|---|---|
element_type | T |
Функции-члены
создаёт новый auto_ptr (публичная функция-член) |
|
уничтожает auto_ptr и управляемый объект (публичная функция-член) |
|
передает владение от другого auto_ptr (публичная функция-член) |
|
| преобразует управляемый указатель в указатель на другой тип (публичная функция-член) |
|
Наблюдатели |
|
| возвращает указатель на управляемый объект (публичная функция-член) |
|
| получает доступ к управляемому объекту (публичная функция-член) |
|
Модификаторы |
|
| заменяет управляемый объект (публичная функция-член) |
|
| высвобождает владение управляемым объектом (публичная функция-член) |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/auto_ptr