C ++ Tricky Const参考考试任务?

时间:2013-06-09 16:36:05

标签: c++ reference const

我正在为我的考试做好准备,并且有一个棘手的问题:

问题是:

  

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

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

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

3 个答案:

答案 0 :(得分:2)

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

第二个创建一个变量,并使用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)

我的回答是:

  • 代码格式不正确,因为它试图延长&不能使用const对象进行初始化,它会重新使用long类型的左值。
  • 最简单的解决方法是删除该行,除此之外,您必须提供有关其目标的信息,因为我可以建议