auto_ptr 指向同一个对象

seujh 2011-11-26 12:21:58
#include <iostream.h>
#include <memory>
class CTest
{
public:
test(){cout <<"test"<<endl;}
};

main()
{
std::auto_ptr<CTest> p(new CTest);

std::auto_ptr<CTest> pp(p); //pp p指向同一个,违背了一句话:不能超过两个auto_ptr指向提供一个对象

//?
p->test();

cout << p.get()<<endl<<pp.get();
}

std::auto_prt<CTest>pp(p); 调用构造函数, pp指向p所指向的 对象,
...全文
92 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qscool1987 2011-11-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 akirya 的回复:]
std::auto_ptr<CTest> pp(p); 的时候 p里面存储的就是空指针了。
p->test(); 就相当于 CTest* p = 0; p->test();
[/Quote]
p里面存储的就是空指针了。
pengzhixi 2011-11-26
  • 打赏
  • 举报
回复
何谓两个auto_ptr指向同一个p是指这个情况:

int *p=new int;

auto_ptr<int> obj1(p);
auto_ptr<int>obj2(p);
这才是两个auto_ptr指向同一个指针
pengzhixi 2011-11-26
  • 打赏
  • 举报
回复
p里面的原生指针已经是空指针了,所有权被pp接手了。
  • 打赏
  • 举报
回复
std::auto_ptr<CTest> pp(p); 的时候 p里面存储的就是空指针了。
p->test(); 就相当于 CTest* p = 0; p->test();

65,184

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧