| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1447 人关注过本帖
标题:求教一个unique_ptr指针赋值的问题
取消只看楼主 加入收藏
Potheads
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2021-4-14
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
求教一个unique_ptr指针赋值的问题
unique_ptr指针不通常能被赋值,下面这个代码是一个匿名对象被赋值给了其他的unique_ptr指针:


unique_ptr<string> p;
p = unique_ptr<string>(new string("Hello"));

似乎是可以的,匿名对象可以被赋予到其他的指针,想请问下原理是什么,匿名对象似乎也不是一个即将消亡的对象。
多谢帮助!!!
搜索更多相关主题的帖子: string 指针 赋值 对象 其他 
2021-04-14 15:10
Potheads
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2021-4-14
收藏
得分:0 
感谢版主,有点思路了,您的代码:

auto x = unique_ptr<string>(new string("Hello"));  中,

实际上 unique_ptr<string>(new string("Hello")); 被编译器视为右值, 赋给 x 时,是调用移动赋值运算符将右值的资源移动给了左值。所以视unique_ptr<string>(new string("Hello"));为右值而不是将亡值。

这样理解就对了吧?
2021-04-14 16:31
Potheads
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2021-4-14
收藏
得分:0 
感谢感谢!! 我明白您的意思,move这个我应该可以理解,我的困惑在于new出来的unique_ptr是左值还是右值。从  auto x = unique_ptr<string>(new string("Hello")); 看来,“=”右边的
表达式因为是个“匿名”对象,所以编译器视其为右值,虽然随其所在函数的返回,“匿名”的unique_ptr对象会释放其资源,但我们不能视其为将亡值,因为在函数结束前,已经通过:
auto x = unique_ptr<string>(new string("Hello")); 将其资源截获,所以本质上其是个右值。

请您指正。
2021-04-14 16:48
快速回复:求教一个unique_ptr指针赋值的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018948 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved