提问人:Aqiu 提问时间:6/14/2021 最后编辑:songyuanyaoAqiu 更新时间:6/14/2021 访问量:284
如果类具有 const 成员,则 move-assignment 运算符定义为已删除?
move-assignment operator is defined as deleted if the class has a const member?
问:
它说“与 Copy-assignment 运算符一样,如果类具有 const 或 reference 成员,则 move-assignment 运算符被定义为已删除C++。
我写了一个演示,如下所示。
#include <iostream>
class A {
public:
A() : mem(0) {}
const int mem;
};
int main()
{
A a1, a2 = std::move(a1);
return 0;
}
它在类中有成员,但为什么它可以成功编译?我错过了什么?const
A
答:
4赞
songyuanyao
6/14/2021
#1
因为这不是同化,而是初始化。 通过 Move 构造函数初始化,但不是 Move Assignment 运算符。a2
std::move(a1)
如果将代码更改为以下代码,则会出现错误:
A a1;
A a2;
a2 = std::move(a1); // assignment
上一个:声明向量 - 预期表达式时出错
下一个:[“{”标记前的预期表达式出错
评论