gpt4 book ai didi

c++ - 为什么 int& r = 0 是非法的,而 const int& r = 0 是合法的?

转载 作者:太空狗 更新时间:2023-10-29 23:30:00 24 4
gpt4 key购买 nike

我是 C++ 新手。我正在尝试学习 const 的概念。有人能告诉我为什么第一个陈述是非法的而第二个陈述是合法的吗?

int i = -1, &r = 0;         

const int i = -1, &r = 0;

最佳答案

i 在这里是一个转移注意力的问题,问题是 int &r = 0;const int &r = 0;

非常量左值引用必须直接绑定(bind)到左值。 0 不是左值,因此 int &r = 0; 失败。

const 左值引用可以绑定(bind)到右值。发生这种情况时,它不会直接绑定(bind)。取而代之的是,创建一个临时变量(类型为 const int)并从右值进行复制初始化。由于此绑定(bind),临时文件的生命周期得以延长。

所以 const int &r = 0; 是合法的,并且与 const int __temp = 0; 有相似的效果const int &r = __temp;

关于c++ - 为什么 int& r = 0 是非法的,而 const int& r = 0 是合法的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34525109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com