Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ cv限定符和隐式类型转换_C++ - Fatal编程技术网

C++ cv限定符和隐式类型转换

C++ cv限定符和隐式类型转换,c++,C++,在守则中, const int x = 3; int y = 0; y += x; 在进行加法之前是否需要从x中删除常量,或者这可能在加法运算符定义中隐式完成?隐式完成,因为您不打算更改x隐式完成,因为您不打算先更改x,+=运算符是赋值运算符(复合赋值)。但其行为相当于y=y+x组合(除了y只计算一次) 其次,当用作加法运算符的操作数时(包括示例中的+=的RHS),x作为右值参与表达式,即隐式进行所谓的左值到右值转换。由于非类类型的右值(int,在您的情况下)不能被cv限定,因此此转换立即丢弃

在守则中,

const int x = 3;
int y = 0;
y += x;

在进行加法之前是否需要从x中删除常量,或者这可能在加法运算符定义中隐式完成?

隐式完成,因为您不打算更改
x
隐式完成,因为您不打算先更改
x
+=
运算符是赋值运算符(复合赋值)。但其行为相当于
y=y+x
组合(除了
y
只计算一次)


其次,当用作加法运算符的操作数时(包括示例中的
+=
的RHS),
x
作为右值参与表达式,即隐式进行所谓的左值到右值转换。由于非类类型的右值(
int
,在您的情况下)不能被cv限定,因此此转换立即丢弃
const

首先,
+=
运算符是赋值运算符(复合赋值)。但其行为相当于
y=y+x
组合(除了
y
只计算一次)


其次,当用作加法运算符的操作数时(包括示例中的
+=
的RHS),
x
作为右值参与表达式,即隐式进行所谓的左值到右值转换。由于非类类型的右值(
int
,在您的情况下)不能进行cv限定,因此此转换将立即丢弃
const

如果仅在给定代码段中使用
x
,则无需删除
const

const
修饰符将一个变量标记为保存只读数据。如果编译器看到您正在修改它,它会生气并报告错误。对于所有其他用途,
const
被删除


在您的情况下,您没有修改
x
,因此不需要删除
const

如果
x
仅在给定代码段中使用,则不需要删除
const

const
修饰符将一个变量标记为保存只读数据。如果编译器看到您正在修改它,它会生气并报告错误。对于所有其他用途,
const
被删除


在您的情况下,您没有修改
x
,因此不需要删除
const

如果您在删除
const
后试图修改
x
,运行时可能会生气:)如果删除
const
:)后试图修改
x
,运行时可能会生气谢谢,正是我想要的解释。谢谢,正是我想要的解释。