Зачем существует два способа обращения к объектам?

wareZ1400

, использование константного указателя чуть менее удобно (синтаксически), но гарантирует ту же степень безопасности. Его тоже нельзя объявить и инициализировать в двух действиях.

Передача в функцию ссылки с положительной стороны, отличается только этим самым "чуть". То есть, чуть проще писать. Если не учитывать нюанс с передачей константной ссылки, который позволяет передать временный объект (заданный литералом, например). С отрицательной стороны, на вызывающей стороне не видно, может ли функция модифицировать параметр или нет. Для передачи по указателю, это более прозрачно. Не нужно смотреть объявление. Хотя и тут может быть объявлен указатель на константу, например. То есть, повод для холивара.

Всё это по верхам и не особо важно. Главным достоинством ссылки является возможность определять операторы возвращающие ссылку на объект. Это позволяет использовать цепочки операторов так же естественно как и в математической записи. Это актуально, например, для оператора приравнивания и выглядит как-то так:

C++Выделить код

1
2
3
4
5

A a, b, c ;
//чего-то там
//----
//
a = b = c ;//вот оно

Но пока Вы сюда не дошли, просто запомните, что эта фича имеет смысл.