您的位置:首页 > 其它

关于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容器对其元素的要求
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: