关于class auto_ptr
2010-01-05 16:51
204 查看
内容摘自《C++标准程序库》:
class auto_ptr:
定义:它是“它所指向对象”的拥有者
当auto_ptr被摧毁时,该对象也将遭到摧毁;而当auto_ptr将拥有权交出去后,就只剩下一个null指针在手里了。
class auto_ptr声明于<memory>
auto_ptr<>不允许使用一般指针惯用的赋值初始化方式,必须直接使用数值来完成初始化:
std::auto_ptr<ClassA> ptr1(new ClassA); //OK
std::auto_ptr<ClassA> ptr2 = new ClassA; //ERROR
auto_ptr的copy构造函数和assignment操作符会将对象的拥有权交出去。
只有auto_ptr可以拿来当作另一个auto_ptr的初值,普通指针是不行的。
以by reference方式传递auto_ptr是非常糟糕的设计,应该全力避免。
很多接口在需要内部拷贝时,都通过constant reference获得原值。
关键词const并非意味你不能更改auto_ptr所拥有的对象,而是意味不能更改auto_ptr的拥有权。
const auto_ptr比较类似常数指针(T* const p)。
auto_ptr的错误运用:
auto_ptr之间不能共享拥有权
并不存在对array而设计的auto_ptr
auto_ptrs决非一个四海通用的智能型指针
auto_ptr不满足STL容器对其元素的要求
class auto_ptr:
定义:它是“它所指向对象”的拥有者
当auto_ptr被摧毁时,该对象也将遭到摧毁;而当auto_ptr将拥有权交出去后,就只剩下一个null指针在手里了。
class auto_ptr声明于<memory>
auto_ptr<>不允许使用一般指针惯用的赋值初始化方式,必须直接使用数值来完成初始化:
std::auto_ptr<ClassA> ptr1(new ClassA); //OK
std::auto_ptr<ClassA> ptr2 = new ClassA; //ERROR
auto_ptr的copy构造函数和assignment操作符会将对象的拥有权交出去。
只有auto_ptr可以拿来当作另一个auto_ptr的初值,普通指针是不行的。
以by reference方式传递auto_ptr是非常糟糕的设计,应该全力避免。
很多接口在需要内部拷贝时,都通过constant reference获得原值。
关键词const并非意味你不能更改auto_ptr所拥有的对象,而是意味不能更改auto_ptr的拥有权。
const auto_ptr比较类似常数指针(T* const p)。
auto_ptr的错误运用:
auto_ptr之间不能共享拥有权
并不存在对array而设计的auto_ptr
auto_ptrs决非一个四海通用的智能型指针
auto_ptr不满足STL容器对其元素的要求
相关文章推荐
- 关于auto_ptr使用的一些随感
- 关于auto_ptr_ref的一点问题
- 关于auto_ptr
- 对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr<class>、实现Ptr_vector
- 关于auto_ptr_ref的一点问题
- 关于std:auto_ptr
- 条款13:关于文中多次提及的auto_ptr和shared_ptr
- 一件有意思的事情:关于std::string和std::auto_ptr
- 关于C++中的auto_ptr
- 关于Xcode6 size class 和 auto layout 的简单理解.
- [置顶] 从零开始学C++之对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr<class>、实现Ptr_vector
- 关于std:auto_ptr
- [置顶] 从零开始学C++之对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr<class>、实现Ptr_vector .
- 关于auto_ptr的使用
- 关于std:auto_ptr
- 关于auto_ptr的一些事
- 关于auto_ptr
- 关于智能指针 auto_ptr
- 关于智能指针auto_ptr
- 从零开始学C++之对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr<class>、实现Ptr_vector