我正在为即将到来的考试而锻炼,有一个棘手的问题:
问题是:
代码有什么问题,如何正确?
const long limit = 1000L; long &ref = limit;
现在我将其键入为 C++ 代码,发现引用 (&) 是此代码示例中的错误,因此编写 long ref = limit即可解决。但是我想知道为什么这可以解决问题。为什么上面的代码是错误的?
初始代码尝试创建对const
变量的非常量引用,这是不允许的。由于引用指向原始变量,分配给ref
将(尝试)修改 的值limit
,这是不允许的,因为limit
is const
。
第二个创建一个变量,并使用来自 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 值的非常量引用,以避免这种可能性。
我的回答是: