读书人

vc2012上的std:string好像不支持右值引

发布时间: 2012-10-13 11:38:17 作者: rapoo

vc2012下的std::string好像不支持右值引用语义
代码:
std::string s("1234567890");
std::string ss(std::move(s));
printf("%p %s\n", s.data(), s.data());
printf("%p %s\n", ss.data(), ss.data());

执行之后,ss仍然重新分配了空间,s的空间仍然存在,只是把第一个字符置成了\0(即变成了一个空字符串),这个不符合c++0x标准啊!是不是要定义什么宏打开某个开关啊?

在linux下就没有问题,ss完全将s的空间拿了过来。

[解决办法]
s是栈上的, 只是把内部的char*拿走了, 栈上的s怎么会自己消失呢?

读书人网 >C++

热点推荐