gpt4 book ai didi

c++ - 为什么一旦我将引用声明为 const,它就可以接受不同类型的数据?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:13 25 4
gpt4 key购买 nike

你好,我想弄清楚这件事..

假设我有这段代码。

int a = 5;
double& b = a; //Error.

然后,一旦我将第二行声明为 const,编译器就不会再报错了。

const double& b = a; //Correct.

背后到底是怎么回事,为什么const解决了问题。

最佳答案

一个int需要先转换为double。该转换会产生一个临时纯右值,并且这些不能绑定(bind)到对非常量的引用。

对 const 的引用将延长临时变量的生命周期,否则临时变量会在创建它的表达式末尾被销毁。

{
int a = 0;
float f = a; // a temporary float is created here, its value is copied to
// f and then it dies
const double& d = a; // a temporary double is created here and is bound to
// the const-ref
} // and here it dies together with d

如果您想知道纯右值是什么,这里有一个很好的 SO thread关于值(value)类别。

关于c++ - 为什么一旦我将引用声明为 const,它就可以接受不同类型的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18279972/

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