std::string中移动构造函数实现方式的疑问(已解决)


按照移动构造函数的要求,个人理解std::string的移动构造函数应该将参数对象的char* data指针直接赋值给目标对象,然后置为nullptr。从地址来看,目标对象的data指针指向的地址应该和参数对象开始时指向的相同。
#include<iostream>
#include<string>
#include<utility>
using namespace std;
int main()
{
	string a("a string");
	cout << &a << " " << hex << (int)a.data() << endl;
	string b(std::move(a));
	cout << &b << " " << hex << (int)b.data() << endl;
}
不过 此程序输出为
0072F99C 72f9a0
0072F978 72f97c
也就是说 data指针指向的内存并不相同,那么实际上是不是还是进行了逐char的拷贝操作?那么在这里移动构造函数的意义是什么呢?只是把原来的data指针置为null了吗?
#C/C++#
全部评论
有没有大佬
1 回复 分享
发布于 2020-10-24 19:12
有没有聊聊技术的大佬
点赞 回复 分享
发布于 2020-10-24 18:05
技术没人聊了吗。。
点赞 回复 分享
发布于 2020-10-24 18:27
emmmm
点赞 回复 分享
发布于 2020-10-24 19:46
蹲大佬。试了一下确实不一样,这是真的底层啊。
点赞 回复 分享
发布于 2020-10-24 21:43
打不开啊,楼主
点赞 回复 分享
发布于 2020-10-24 22:43
长字符串(>15)可以,短字符串是在栈上,不会移动拷贝
点赞 回复 分享
发布于 2021-08-12 11:04
同问(另外,我试了一下长字符串,得到的实际char*的地址也是不相同的),所以有点搞不懂这个移动构造的意义在哪儿😂
点赞 回复 分享
发布于 2022-06-27 20:14
string类内部有一个指向字符串的指针,被改变的是此指针,而不是指向类的指针
点赞 回复 分享
发布于 2022-11-18 10:56 河北

相关推荐

GGrain:没事,本硕985也不发面试笔试😖
点赞 评论 收藏
分享
11-05 21:40
已编辑
北京交通大学 Java
自来熟的放鸽子能手面试中:北京交通大学在这想都不敢想是吧
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-01 20:56
已编辑
百度一面1h(10.28)&nbsp;1.自我介绍&nbsp;2.项目介绍&nbsp;3.八股&nbsp;4.两数之和(map&nbsp;5.接受一个箭头函数作为参数,返回一个可多次执行的新函数(面试官说思路大致正确)&nbsp;百度二面1h(11.1)&nbsp;1.自我介绍&nbsp;2.项目难点?视频流格式,视频压缩做过吗?&nbsp;table,树形结构?&nbsp;3.typescript?用过哪些,和java的区别?&nbsp;4.讲讲tcp连接&nbsp;输入域名到显示页面过程&nbsp;5.cssom树?讲讲查找某个class元素的过程,如果有id,class等多个选择器,怎么进行匹配?&nbsp;6.网络安全?讲讲前端防御性编程?(蒙&nbsp;7.用户登陆的防御方式?中间人攻击怎么办?&nbsp;8.usecount...
AI牛可乐:哎呀,面试的感觉好像有点紧张呢,不过你已经很棒了,能坚持到二面已经很厉害了!👍牛可乐在这里给你加油打气哦!面试的内容听起来好专业,不过我相信你一定有自己的见解。悄悄问一下,面试的时候紧张吗?😊 关于你提到的技术问题,如果你愿意的话,我们可以一起探讨一下,比如那个“两数之和”的问题,你是怎么想的呢?或者,如果你现在有什么不太确定的地方,牛可乐可以帮你一起想想解决办法哦! 对了,如果你想私下聊聊,可以点击牛可乐的头像给我发私信哦,我们可以一起探讨更多求职的小秘密!💌 现在,你想聊聊哪个技术点呢?还是想先放松一下,聊点别的?牛可乐在这里等你哦!😉
查看12道真题和解析 牛客在线求职答疑中心
点赞 评论 收藏
分享
3 2 评论
分享
牛客网
牛客企业服务