我正在为我的考试做好准备,并且有一个棘手的问题:
问题是:
代码有什么问题,它是如何正确的?
const long limit = 1000L; long &ref = limit;
现在我将其键入为C ++代码并发现引用(&)是此代码示例中的错误,因此编写长 ref = limit 可以解决它。但是,我想知道为什么这解决了这个问题。为什么是 代码上面错了?
答案 0 :(得分:2)
初始代码尝试创建对const
变量的非const引用,这是不允许的。由于引用是指原始变量,因此分配给ref
会(尝试)修改limit
的值,这是不允许的,因为limit
是const
。
第二个创建一个变量,并使用const变量中的值初始化它。
您还可以创建对const:long const &cref = limit;
答案 1 :(得分: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对const值的引用,以避免这种可能性。
答案 2 :(得分:0)
我的回答是: