【发布时间】:2021-03-25 04:00:43
【问题描述】:
我有以下代码:
class string
{
std::string data;
public:
string()
{
data = "Hello";
}
string(const string& that)
{
data = std::move(that.data);
std::cout << data << " and that.data " << that.data;
}
};
int main()
{
std::vector<int> vec = { 1, 2, 3, 4, 5 };
std::cout << "vec size = " << vec.size() << std::endl;
std::vector<int> nvec = std::move(vec);
std::cout << "nvec size = " << nvec.size() << std::endl;
std::cout << "vec size = " << vec.size() << std::endl;
string s;
string s1(s);
}
代码的输出是:
vec size = 5
nvec size = 5
vec size = 0
Hello and that.data Hello
为什么 that.data 没有像 nvec 和 vec 那样移动到目标数据?
【问题讨论】:
-
Const 对象不可移动。您可以在任何现代 C++ 书籍中了解这一点。