cv限定符和隐式类型转换
cv-qualifiers and implicit type conversion
代码中
const int x = 3;
int y = 0;
y += x;
是否需要在做加法之前从x中删除const,或者这可能在加法操作符定义中隐式完成?
首先,+=
运算符是一个赋值运算符(复合赋值)。它的行为虽然相当于y = y + x
组合(除了y
只计算一次)。
+=
的RHS), x
作为右值参与表达式,即它隐式地接受所谓的左值到右值转换。这个转换会立即丢弃const
,因为非类类型的右值(在您的例子中是int
)不能是cv限定的。
隐式完成,因为您不打算更改x
。
如果x
仅像给定代码段中那样使用,则不需要删除const
。
const
修饰符将一个变量标记为保存只读数据。如果编译器看到您正在修改它,它会生气并报告一个错误。对于所有其他用途,const
将被删除。
在您的情况下,您没有修改x
,因此不需要删除const
。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++中的双指针类型转换
- 逐位操作的隐式类型转换
- 模板中的类型转换
- 在 C++(和 C)中进行类型转换时明显不一致
- 字符类型转换不兼容
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- C++:用户定义的显式类型转换函数错误
- 将类指针类型转换为键时出错
- 通过引用传递参数时C++类型转换
- 在 C++ 中将一个模板类型的对象类型转换为另一个模板类型
- C++显式类型转换(C 样式强制转换)的强制表示法和static_cast的多种解释
- C++无效的函数类型转换
- 在将派生类指针类型转换为派生类指针后,从基类指针调用派生类函数
- 如何将Windows产品类型转换为名称?
- 通过构造函数方法输出的类到类类型转换是 5500 为什么不是 5555
- 事件系统:使用类型转换或联合进行继承
- 如何转换 cv:垫子的类型
- cv限定符和隐式类型转换