0

我正在为即将到来的考试而锻炼,有一个棘手的问题:

问题是:

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

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

现在我将其键入为 C++ 代码,发现引用 (&) 是此代码示例中的错误,因此编写 long ref = limit即可解决。但是我想知道为什么这可以解决问题。为什么上面的代码是错误的?

4

3 回答 3

2

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

第二个创建一个变量,并使用来自 const 变量的值对其进行初始化。

您还可以创建对 const 的引用:long const &cref = limit;

于 2013-06-09T16:39:25.807 回答
0
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 值的非常量引用,以避免这种可能性。

于 2013-06-09T16:47:09.510 回答
0

我的回答是:

  • 代码格式错误,因为它试图 long& 不能用 const 对象初始化,它重新获得 long 类型的左值。
  • 最简单的解决方法是删除该行,除此之外,您必须提供有关其目标的信息,因为我可以建议
于 2013-06-09T16:48:49.980 回答