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)
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/cpp/memory/auto_ptr