c++ - 在 C++ 中将 char 分配给 int 引用和 const int 引用

标签 c++ reference casting constants c++03

我注意到将 char 分配给 const int& 可以编译,但是将其分配给 int& 会出现编译错误。

char c;
int& x = c;    // this fails to compile
const int& y = c;    // this is ok

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

我通过寻找“分配给不同类型的引用”、“将 char 分配给一个 int 引用”和“const 引用和非常量引用之间的区别”来寻找答案,并遇到了许多有用的帖子( int vs const int&Weird behaviour when assigning a char to a int variableConvert char to int in C and C++Difference between reference and const reference as function parameter? ),但它们似乎没有解决我的问题。

如果之前已经回答过这个问题,我深表歉意。

最佳答案

int& x = c;

编译器正在执行从 charint 的隐式转换。生成的临时 int 只能绑定(bind)到 const 引用。绑定(bind)到 const int& 还将延长临时结果的生命周期,以匹配它所绑定(bind)到的引用的生命周期。

关于c++ - 在 C++ 中将 char 分配给 int 引用和 const int 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780417/

相关文章:

c++ - 在 C++ 中为 iOS 选择 3D 引擎

c++ - 使用 c malloc 函数分配内存的意外结果

c++ - OpenGL SOIL 未定义对 glBindTexture、glTexImage2d 等的引用

c++ - qobject_cast 是如何工作的?

c - 自动类型转换差异

c++ - C/C++ - 为什么在我为单个 int 分配空间时堆如此之大?

c++ - 在 Irrlicht 中使用 SDL

php - Codeigniter : Why assign it to a variable? 中的 get_instance()

c++ - 使用 C++11 Range for 循环更改字符串中的字符

c++ - 这应该模棱两可吗? (隐式转换)