这是我和我的同事们正在讨论的一个理论问题。我很快就会尝试一下,但我觉得这对新手来说是一个令人兴奋的话题。
让我们想象一下,基类“VEHICLE”和派生类如“CAR”和“TRUCK”...... (其中“VEHICLE”是一个抽象类,无法实例化)。
到目前为止一切顺利。现在你创建了一辆名为A的汽车:汽车A;
和一个名为B的A的引用: const car& B = A;
我们假设类“CAR”有一个名为broken_door的函数。我的问题现在如下:当我打电话给 A.broken_door(); 时 B会发生什么,因为B是一个常数和一个参考对象?
提前谢谢
答案 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配置文件,如果你看一下,你仍会看到更改。