170 похожих чатов

Всем привет) Такой вопрос философский волнует Мы же можем, в принципе, для

большинства задач в С++ обходиться без указателей?
Использовать ссылки
И в каких ситуациях без указателей нельзя обойтись? Какие-то супер явные кейсы, преимущества

13 ответов

18 просмотров

Вот предположим. У тебя по адресу 0XBFD05400 находится регистр управления... допустим I2C. Удачи обратиться туда по ссылке.

ссылка тот же указатель, только всегда ссылающийся на существующий объект. если влезть в дерби реализации, то ты обнаружишь, что ссылка реализуется как константный указатель внутри языка

Hidanio- Автор вопроса
Anatoly Shirokov
ссылка тот же указатель, только всегда ссылающийся...

Да, я это смотрел И вот как раз возникает такой вопрос Что в принципе, для большинства задач - можно обойтись для указателя и избежать многих ошибок, верно?

Hidanio
Да, я это смотрел И вот как раз возникает такой в...

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

Hidanio
Да, я это смотрел И вот как раз возникает такой в...

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

Слава
Но ссылка же не константа..

константный указатель и указатель на константу - это большая разница

Anatoly Shirokov
константный указатель и указатель на константу - э...

Константная ссылка и ссылка на константу

ещё такой момент - если тебе требуется опционально ссылаться в классе на какой-то объект, с указателем это сделать просто - указатель или не nullptr, или nullptr, со ссылкой же так не получится сделать (извращения вроде std::optional<std::reference_wrapper<T>> я не рассматриваю)

atomic
ещё такой момент - если тебе требуется опционально...

аналог указателя в этом случае просто std::optional<T>, но он имеет много недостатков по сравнению с указателем: T должен быть полный типом

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта