在代码中,
const int x = 3;
int y = 0;
y += x;
是否需要在添加之前从x中删除const,或者这可能是在加法运算符定义中隐式执行的?
答案 0 :(得分:5)
首先,+=
运算符是赋值运算符(复合赋值)。它的行为相当于y = y + x
组合(除了y
只评估一次)。
其次,当用作加法运算符的操作数(包括示例中的+=
的RHS)时,x
作为 rvalue 参与表达式,即它隐含地受到所谓的左值到右值的转换。此转换会立即丢弃const
,因为非类类型的rvalues(在您的情况下为int
)无法通过cv限定。
答案 1 :(得分:0)
隐式完成,因为您不会更改x
。
答案 2 :(得分:0)
如果仅在给定代码段中使用const
,则无需删除x
。
const
修饰符将一个变量标记为保留只读数据。如果编译器发现您正在修改它,它会生气并报告错误。对于所有其他用途,const
将被删除。
在您的情况下,您不会修改x
,因此无需const
删除。