Re[2]: Не могу понять ссылки в C++
От: Worminator X Россия #StandWithPalestine 🖤🤍💚
Дата: 15.06.24 14:40
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Ссылки — это не совсемсинтаксический сахар над указателями. По крайней мере не в смысле определения, хотя их и можно использовать как таковые. Ссылка — это альтернативное имя для какого-то выражения, алиас.

AD>Саму ссылку нельзя изменить, она привязывается (bind) к чему-то в момент определения и остается привязанной к этому выражению до конца своего существования.
AD>Грубо говоря, ссылка ведет себя как разыменованный константный указатель. Не указатель на константу, а именно константный указатель. А, например, константная ссылка как константный указатель на константу (const * const).

AD>создается ссылка current, которая привязывается к list. Она и останется привязанной к list.

AD>Выражение current = ((IntegerList&)current).getNext() не перепривязывает ссылку current к другому объекту, а присваивает привязанному объекту list значение из list.getNext().

AD>Как раз здесь ссылки неуместны, если ты конечно не строишь иммутабельные списки. Если потребуется список поменять, его придется перестроить весь, от начала и до конца.

AD>При этом, с динамической памятью на ссылках работать не получится.

Мда, сложно как-то. Ну его на фиг, этот C++, лучше чистый Си с указателями и Java для ООП.
А списки хотел сделать именно иммутабельными (вообще это попытка написать свой интерпретатор Лиспа, там было более сложное наследование с атомами и списочными парами).
Ссылка — это некий аналог #define макросов для компилятора, получается?
Как запру я тебя за железный замок, за дубовую дверь окованную,
Чтоб свету божьего ты не видела, мое имя честное не порочила…
М. Лермонтов. Песня про царя Ивана Васильевича, молодого опричника и удалого купца Калашникова
Отредактировано 15.06.2024 14:57 Worminator X . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.