修改常量引用

时间:2014-12-03 11:20:08

标签: c++ const ref

这是我和我的同事们正在讨论的一个理论问题。我很快就会尝试一下,但我觉得这对新手来说是一个令人兴奋的话题。

让我们想象一下,基类“VEHICLE”和派生类如“CAR”和“TRUCK”...... (其中“VEHICLE”是一个抽象类,无法实例化)。

到目前为止一切顺利。现在你创建了一辆名为A的汽车:汽车A;
和一个名为B的A的引用: const car& B = A;

我们假设类“CAR”有一个名为broken_door的函数。我的问题现在如下:当我打电话给 A.broken_door(); 时 B会发生什么,因为B是一个常数和一个参考对象?

提前谢谢

3 个答案:

答案 0 :(得分:2)

B只是对A的引用,它为您提供了同一对象的不同名称。

const car& B = A;无法将A神奇地转变为无法修改的常量对象,只是意味着您无法修改B

您仍然可以通过直接修改A或通过另一个(非常量)指针或引用来更改对象。

答案 1 :(得分:2)

B什么都不会发生。它将继续引用A,它将被修改。

const表示B无法用于修改其引用的对象。它并不意味着物体不能通过其他方式改变。

答案 2 :(得分:1)

" B"和" A"是同一件事的不同名称 它们之间的区别在于你无法将事物称为" B"如果你想改变它。
(A" const引用"不是对不会改变的对象的引用,它是禁止更改的引用。)

一个略有缺陷的类比:你可以使用名称" molbdnilo"作为" const参考"对我(因为它指的是我,但你没有能力修改我) 不过,如果我更改了stackoverflow配置文件,如果你看一下,你仍会看到更改。

相关问题