首页 > std::string中移动构造函数实现方式的疑问(已解决)
头像
玛西洛
编辑于 2020-10-24 22:23
+ 关注

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了吗?

全部评论

(9) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐