gpt4 book ai didi

c++ - const int &x = 4 和 const int x = 4 的区别

转载 作者:搜寻专家 更新时间:2023-10-31 02:14:52 24 4
gpt4 key购买 nike

引用的唯一目的是别名。将引用(指的是常量 int)分配给整数似乎很荒谬,因为它不是别名(并且不会给出错误!)。我想这类似于定义一个常量 int 本身。有区别吗?

最佳答案

在函数体或文件范围内,唯一的区别是decltype(x)。在一种情况下,它是 int const,在另一种情况下,它是 int const&

const int & x=7; 创建了一个临时的匿名int,值为7。然后它将引用 x 绑定(bind)到它。临时的生命周期延长到引用的生命周期。这基本上与 x 没有区别,xconst int 的名称,值为 7

它几乎相同的一个异常(exception)是当绑定(bind)作为成员初始化的一部分发生在对象的构造函数中时。在这种情况下,生命周期不会延长。

我怀疑你可以通过以下方式诱导它:

struct Foo{
int const& x=7;
Foo(){};
};

上面的语法要么是非法的,要么是悬而未决的(我不记得引用标准中是否有极端情况),而:

struct Foo{
int const x=7;
Foo(){};
};

既合法又不悬空。所以还是有区别的。

作为函数的参数也会有所不同,这里 =7 只是提供了一个默认值。

关于c++ - const int &x = 4 和 const int x = 4 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39422188/

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