gpt4 book ai didi

c++ - 为什么这种从 int 到 double& 的转换不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 14:38:14 24 4
gpt4 key购买 nike

错误!

$ cat double.cc
#include<iostream>

int main() {
int i = 42;
double &r = i;
}
$ g++ double.cc
double.cc: In function ‘int main()’:
double.cc:5: error: invalid initialization of reference of type ‘double&’
from expression of type ‘int’
$

有效!

$ cat double.cc
#include<iostream>

int main() {
int i = 42;
const double &r = i;
}
$ g++ double.cc
$

为什么我们在第一种情况下会得到错误?我知道这是讨论 here , 但我不确定我是否理解为什么不允许这样做,而 intconst double& 是允许的?

最佳答案

int i = 42;
double &r = i;

这里的r是对double的引用,但是i不是double,那么怎么可能r 指的是什么?这不可以。因此,它从表达式 i 中创建了一个类型为 double 的临时对象。但同样,r非常量 引用,无法绑定(bind)到临时对象。

但是,如果您将其设为 const 引用,那么它将起作用:

double const & r = i;

请注意,const 引用可以绑定(bind)到由 i 创建的临时对象。

关于c++ - 为什么这种从 int 到 double& 的转换不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12428174/

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