unique_ptr智能指针reset问题

迷茫的蜉蝣 2023-04-24 18:08:36

关于智能指针我有一个问题:

都知道unique_ptr创建的智能指针,所指的堆空间是智能指针独有的,其他指针不能指向该空间,例如:

std::unique_ptr<int> a(new int);

int *b = a;//这样编译会报错

但是使用reset的时候:

std::unique_ptr<int> a(new int);

int *b = new int;

a.reset(b);//这个操作就把a的指向改为了指向b的空间,此时a,b同时指向同一空间。

 

那么问题来了:

为什么 int *b = a;//这样编译会报错 这个a和b指向同一空间会报错,而a.reset(b);这样就可以指向同一空间呢?

 

...全文
59 2 打赏 收藏 转发到动态 举报
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 04-24
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/7932732, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
  • 打赏
  • 举报
回复

重载了类型转换,不允许从 std::unique_ptr 转换为 T*

63,594

社区成员

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