9.6 模板类auto_ptr
2025年09月26日
9.6 模板类
auto_
ptr
使用模板类auto_ptr,需要包含头文件<memory>。模板类auto_ptr使用new()函数将指针存储在一个对象中,当需要破坏此指针时,使用delete()函数。模板auto_ptr_ref保持了对类auto_ptr的一个引用。该引用可用于允许auto_ptr类型对象的传递和从函数中将值传递出来。请阅读以下代码:
类auto_ptr提供了一种语义学意义上的严格的所有权——类auto_ptr拥有的对象仅仅存储了一个指针。复制一个类auto_ptr的备份时,指针和所有权均被复制到目的地。如果多个autoptr类在同一时间拥有同一个对象,程序执行时,结果可能是不确定的。
提示
类auto_ptr的使用包括提供临时异常安全,用于动态分配内存,传递动态内存的所有权给函数,并返回之前为函数动态分配的内存。类auto_ptr不能满足标准库容器中元素要求的“构造复制性”和“可设置性”,而且在不确定的情况下,不能使用auto_ptr类型结果初始化标准库容器。