Ссылки на С++ имеют два свойства:
- Они всегда указывают на один и тот же объект.
- Они не могут быть 0.
Указатели противоположны:
- Они могут указывать на разные объекты.
- Они могут быть 0.
Почему в С++ нет "не-нулевой, сопоставимой ссылки или указателя"? Я не могу придумать вескую причину, почему ссылки не должны быть пересадки.
Edit: Вопрос возникает часто, потому что я обычно использую ссылки, когда хочу убедиться, что "ассоциация" (я избегаю слов "ссылка" или "указатель" здесь) никогда не является недопустимой.
Я не думаю, что когда-либо считал, что "этот ref всегда относится к одному и тому же объекту". Если ссылки были reseatable, все равно можно получить текущее поведение следующим образом:
int i = 3;
int& const j = i;
Это уже законный С++, но бессмысленный.
Я повторяю свой вопрос следующим образом:. Каково было обоснование конструкции "ссылка - это объект"? Почему было сочтено полезным иметь ссылки всегда как один и тот же объект, а не только когда объявлено как const? "
Приветствия, Феликс