Модификация постоянной ссылки

Это теоретический вопрос, о котором я и мои коллеги обсуждали. Я скоро попробую сам, но я подумал, что это интересная тема для новичка.

Давайте представим, что есть базовый класс «VEHICLE» и производные классы, такие как «CAR» и «TRUCK» …
(где «VEHICLE» является абстрактным классом и не может быть создан).

Все идет нормально. Теперь вы создаете автомобиль с именем A: автомобиль А;
и постоянная ссылка на A с именем B: const car& B = A;

Давайте предположим, что класс «CAR» имеет функцию broken_door. Мои вопросы теперь следующие: когда я звоню A.broken_door ();
что будет с B, поскольку B является константой и эталонным объектом?

заранее спасибо

-2

Решение

Ничего не случится с B, Было бы продолжать ссылаться на A, который будет изменен.

const Значит это B не может быть использован для изменения объекта, к которому он относится. Это не значит, что объект не может измениться другими способами.

2

Другие решения

B это просто ссылка на A это дает вам другое имя для того же объекта.

const car& B = A; волшебным образом не поворачивается A в постоянный объект, который не может быть изменен, это просто означает, что вы не можете изменить его через B.

Вы все еще можете изменить объект, изменив A напрямую или через другой (неконстантный) указатель или ссылку.

2

«B» и «A» — это разные названия одной и той же вещи.
Разница между ними заключается в том, что вы не можете называть вещь «В», если хотите ее изменить.
(«Постоянная ссылка» — это не ссылка на объект, который не изменится, это ссылка, через которую изменение запрещено.)

Немного ошибочная аналогия: вы можете использовать имя «molbdnilo» в качестве «константной ссылки» на меня (потому что это относится ко мне, но вы не можете изменить меня).
Тем не менее, если я изменю свой профиль stackoverflow, вы все равно увидите изменение, если вы посмотрите на него.

1
По вопросам рекламы [email protected]