在C++中将char赋值给int引用和const int引用

Mas*_*Man 10 c++ casting const reference c++03

我注意到将a分配charconst int&编译,但将其分配给a int&会产生编译错误.

char c;
int& x = c;    // this fails to compile
const int& y = c;    // this is ok
Run Code Online (Sandbox Code Playgroud)

我知道这样做不是一个好习惯,但我很想知道它发生的原因.

我通过寻找"分配给不同类型的引用","将char分配给int引用"和"const引用与非const引用之间的区别"来搜索答案,并且遇到了许多有用的帖子(int VS const int的和,分配一个char到一个int变量时怪异的行为,转换字符在C和C++为int,参考和const引用作为函数参数之间的区别是什么?),但他们似乎并不是解决我的问题.

如果以前已经回答过,我很抱歉.

Pra*_*ian 8

int& x = c;
Run Code Online (Sandbox Code Playgroud)

从这里的隐式转换charint正由编译器执行.生成的临时int只能绑定到const引用.绑定到a const int&也会延长临时结果的生命周期,以匹配绑定的引用的生命周期.