c++棘手的常量参考考试任务

C++ Tricky Const Reference Exam Task?

本文关键字:参考 考试 任务 常量 c++      更新时间:2023-10-16

我正在为即将到来的考试做准备,有一个棘手的问题:

问题是:

代码有什么问题,它如何是正确的?

const long limit = 1000L;
long &ref = limit;

现在我把它作为c++代码输入,发现引用(&)是这个代码示例中的错误,所以写long ref = limit解决了这个问题。然而,我想知道为什么这解决了问题。为什么?上面的代码有问题吗?

初始代码试图创建对const变量的非const引用,这是不允许的。由于引用指向的是原始变量,因此给ref赋值将(试图)修改limit的值,这是不允许的,因为limitconst

第二个函数创建一个变量,并使用const变量的值初始化该变量。

你也可以创建const: long const &cref = limit;的引用

Whats wrong with the code and how would it be correct?
const long limit = 1000L;
long &ref = limit;

让这个例子更进一步:

ref = 1001L; // ooops! we just changed the value of limit

给引用赋值会修改原始变量,在本例中为const。为了避免这种可能性,编译器不允许你创建一个指向const值的非const引用。

我的答案是:
  • 代码格式错误,因为它试图长&不能用const对象初始化,它要求左值类型为long。
  • 最简单的解决方法是删除这一行,除此之外,你必须提供关于其目标的信息,为此我可以建议