c++ - 为什么叫copy assignment而不是move assignment?
问题描述
这是我的测试课。VTX 既有复制分配又有移动分配。VTZ 有一个构造函数VTS&&
来初始化它的vtx
成员。
struct VTX
{
int x;
vector<int> vts;
VTX & operator= (const VTX & other)
{
x = other.x;
vts = other.vts;
cout << "copy assignment\n";
return *this;
}
VTX & operator= (VTX && other)
{
x = other.x;
vts = std::move(other.vts);
cout << "move assignment\n";
return *this;
}
};
struct VTZ
{
VTX vtx;
VTZ(VTX && vvv)
{
vtx = vvv;
}
VTZ()
{}
};
测试代码:
int main(VOID)
{
VTX vtx;
vtx.vts.resize(10);
VTZ vtz(std::move(vtx));
return 0;
}
我认为在构建 VTZ 时会调用 VTX 的移动分配。但
输出:
复制作业
我真的很困惑为什么叫复制分配而不是移动分配?
解决方案
推荐阅读
- docker - Docker 容器无法解析主机服务器 IP
- machine-learning - 机器学习中的OOF方法是什么?
- visual-studio-code - 为什么“使用代码打开”在上下文菜单中出现两次?
- python-3.x - Python:在杂乱无章的文件中根据前面的标识符添加数字
- git - Git - 从以前的发布分支创建一个分支,并希望将更改复制到当前发布分支
- javascript - 在定义我的圆的坐标时添加到我当前的 attr cx 值
- architecture - 事件采购 - “升级”投影仪
- certificate - 如何将私钥添加到 C++ 中 Windows 信任库中的证书?
- mysql - 删除 mysql 查询中字符串字段的重音符号
- csv - PySpark 写入 CSV 引用所有非数字