gpt4 book ai didi

c++ - 关于 const 引用和临时对象的问题

转载 作者:行者123 更新时间:2023-12-01 15:06:37 29 4
gpt4 key购买 nike

我从 C++ Primer 中了解到,当我将 const 引用绑定(bind)到非 const 对象时,该引用被绑定(bind)到一个临时对象,其值为非 const 对象。

int a = 1;
const int &b = a;
a = 2;
std::cout<<b;

据我了解,一个临时的 const int值为 a的对象将被创建和 b将用它初始化,所以,就好像我写了这段代码:
int a = 1;
const int x = a;
const int &b = x;
a = 2;
std::cout<<b;

第一个代码打印 2,而第二个代码打印 1。为什么?为什么 const 的值引用了 b随变而变 a虽然它实际上绑定(bind)到一个临时 const 对象而不是 a直接地?

最佳答案

您混淆了 C++ 入门书所说的两件不同的事情。

首先,您使用术语“常量引用”来表示本身是常量的引用。这不是 C++ 入门所指的术语“常量引用”。正如它所说:

TERMINOLOGY: CONST REFERENCE IS A REFERENCE TO CONST
C++ programmers tend to cavalier in their use of the term const reference. Striclty speaking, what is meant by "const reference" is "reference to const". ... This usage is so common that we will follow it in this book as well.



其次,您将涉及不同基本类型( doubleconst int )的示例和规则与涉及相同基本类型( intconst int )的示例混淆了。

试试这个以获得您描述的效果:
double a = 42.0;
const int &b = a;

关于c++ - 关于 const 引用和临时对象的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60762009/

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