您的位置:首页 > 编程语言 > C语言/C++

C++智能指针之auto_ptr

2013-04-21 17:44 483 查看
Deprecated in C++ 11,因为Transfer of ownership。比如作为函数参数传递时,会丧失所有权。

get() 获取原始指针

release() 释放auto_ptr并返回原始指针

reset(X*) 释放对象并为auto_ptr设置新值

operator* 解引用对象

operator-> 解引用对象成员

operator= 拷贝并转移所有权

#include <memory>

struct S {
int i;
};

int main() {
std::auto_ptr<int> p1(new int);
*p1.get() = 1;

std::auto_ptr<int> p2(p1);
// p1 is now null-pointer auto_ptr

std::auto_ptr<int> p3 = p2;
// p2 is now null-pointer auto_ptr

p3.reset(new int);
*p3 = 2;

int* pi = p3.release();
// p3 is now null-pointer auto_ptr

delete pi;

std::auto_ptr<S> ps(new S);
ps->i = 3;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: