|
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
|
||||||||||||||||
Указатели - отстойные ссылки?18.06.2021, 17:10. Показов 6678. Ответов 62
Прямое наследие С - это тонна методов из <stdlib.h> в стиле
В общем 83 давно за горами, СтраусТруп всё ещё жив, появились ссылки, которые избавили б людей от всего такого безумия. А люди до сих пор посылают указатели вместо ссылок, считают, что указатель - это динамический массив, ну и конечно считают умные указатели высшим разумом Ну так вот Есть ли профит от указателей в 2к21. Я не про какие-то однострочные сравнения адресов или что-то подобное. Есть ли в 2к21 вообще профит от функции, где хоть один аргумент может быть указателем?
0
|
||||||||||||||||
| 18.06.2021, 17:10 | |
|
Ответы с готовыми решениями:
62
Указатели и ссылки Указатели и Ссылки |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 19.06.2021, 00:45 | ||
|
в данной теме нет никаких намёков ни на какие писания. тогда уж напротив: скорее уж тогда он как раз таки не читает писаний. потому что у ребят, которые читают литературу, подобных вопросов обычно не возникает.
0
|
||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 19.06.2021, 01:27 | ||
|
Конкретную цитату в конкретной книжке для новичков я, конечно, не приведу. Но догадываюсь, что вопрос ТС мог возникнуть после прочтения книжки, в которой есть рекомендация по поводу использования ссылок, умных указателей итп. Но хорошо не объясняется, что же такое, собственно, ссылки и указатели. Иначе подобного вопроса не возникло бы.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 19.06.2021, 02:23 | |
|
0
|
|
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 19.06.2021, 02:27 | |
|
0
|
|
|
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
|
||
| 19.06.2021, 09:34 [ТС] | ||
|
ТС - не тролер. Тут конечно тоже непонятно, чем автору ссылки не угодили в данном примере. Ну и как вы наверное не поняли ещё с первых моих сообщений. Я не спрашивал, можно ли отказаться от указателей. Я спрашивал есть ли реальный профит от вызова фронте-ендовских функций (тех, что для юзеров апи) с указателями в качестве аргументов. Я не имел в виду какие-то экстравагантные вещи, где действительно нужно самому контролировать вызов деструктора и сохранять объект даже после выхода из зоны видимости. Как по мне, указатели - не лучшее, что есть для прямого использования в функциях без серьёзной на то надобности
1
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 19.06.2021, 14:48 | |||
|
думаешь, что люди их используют себе в убыток?
0
|
|||
|
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
|
||||||||||||||
| 19.06.2021, 15:06 [ТС] | ||||||||||||||
|
Я не это имел в виду. Я просто не могу понять, как можно это не понять
Почему у std::swap Такая сигнатура например
Единственная ситуация, где я мог бы представить реальное отправление указателя в функцию - делегаты. Потому что там как раз нужно сохранять объект даже после выхода из зоны видимости. И там его прямо реально нужно как указатель создавать. Ну то есть когда во что-то нужно вкинуть ссылку на объект, который не диспоснется Я всё это время говорил, что против того, чтобы по какой-то причине создавать указатель на объект там, где это не нужно и считаю, что использование указателей - не грех, особенно там, где это нужно.
0
|
||||||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 19.06.2021, 15:18 | |
Сообщение было отмечено Super-Hacker как решение
Решение
Super-Hacker, есть три главные причины
1) Стилистика. Есть подходы к стилю, когда указатели используются специально там, где нужно подчеркнуть, что передаваемый объект может измениться. С технической точки зрения здесь действительно можно изменить указатели на ссылки, но этого не делают намеренно, потому что большая часть кодовой базы уже написана/у технических лидеров проекта непреклонный взгляд на это. 2) Необходимость поддерживать двоичную соместимость. Есть код, который в целом мог бы использовать ссылки, но не делает этого, потому что это приведет к потере бинарной совместимости. Речь о всяких API DLL и т.д. Сейчас, если нужно написать DLL, которую потом можно было бы использовать, например, из C#, то без указателей это сделать не получится. На С++-сные ссылки нет стандартного ABI, в отличие от указателей. 3) Техническая необходимость. В соответствии с тем, что делает код, нам реально нужно передавать именно указатель и ничто другое. Ну например мы пишем смартпойтнер. Указатель нужно передать в его конструктор, иначе мы просто не решим задачу. В остальных случаях, разумеется, лучше использовать ссылки.
2
|
|
|
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
|
|
| 19.06.2021, 15:21 [ТС] | |
|
Спасибо. Очень понятно
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 19.06.2021, 15:21 | ||||||
|
а не квадратные. например: - требование, что бы API было совместимо с языком си. - поддержика опциональных параметров функции. и тп. только это уже совсем другая тема. в действительности, многие люди не осознают, в каких ситуациях какие инструменты уместны, а какие - нет. далеко ходить не нужно, взять твой же собственный вопрос: в каких случаях уместно использовать указатели, а в каких - ссылки.
0
|
||||||
|
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
|
||
| 19.06.2021, 15:42 [ТС] | ||
|
Вы видимо единственный, кто ещё не понял. Я не говорил, что указатели - отстой Я же сказал ФУНКЦИИ ДЛЯ НЕПОСРЕДСТВЕННОГО ИСПОЛЬЗОВАНИЯ ДЛЯ ДАЛЬНЕЙШЕЙ РАЗРАБОТКИ поэтому и привёл в пример функции из std::. Я потому и спросил, почему там ссылки, раз указатели имеют ряд преимуществ Не по теме:
Потому я и спрашивал, раз указатели настолько круты, почему в стд сплошь и рядом ссылки Кстати, я так и не понял тот пример Указатели - отстойные ссылки? В чём там необходимость от свапа через указатели и обёртку над свапом?
0
|
||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||
| 19.06.2021, 15:55 | ||
|
Эт такая косвенная сортировка там.
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 19.06.2021, 15:57 | |||
T у swap.
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 19.06.2021, 16:00 | ||||||||
|
а вот ты меня, похоже, не очень. ты смотришь на неккий "профит", "крутизну" инструмента. я ж тебе пытаюсь донести: забей на профит, смотри на уместность можешь смело удалить эту обертку из кода, и ничего вообще не изменится:
когда человек не осознает, когда уместно применять инструмент, а когда нет.
0
|
||||||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||||||
| 19.06.2021, 16:18 | ||||||
|
Чёт такое, наверное, имелось в :
0
|
||||||
| 19.06.2021, 16:24 | ||
|
Не по теме:
https://en.cppreference.com/w/cpp/utility/launder https://en.cppreference.com/w/... ant/get_if https://en.cppreference.com/w/... y/any_cast https://en.cppreference.com/w/... to_address https://en.cppreference.com/w/cpp/memory/align https://en.cppreference.com/w/... me_aligned https://en.cppreference.com/w/... nstruct_at https://en.cppreference.com/w/... destroy_at это то, что вспомнил с первого раза(ну и что под руку попалось). в аллокаторах много где используется в целом.
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||||
| 19.06.2021, 19:19 | |||||||||
|
http://cs.brown.edu/people/jwi... ource.html
0
|
|||||||||
|
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
|
||||||
| 20.06.2021, 08:11 [ТС] | ||||||
А что-то, что реально принимает указатель в конструкторе или как аргумент функции Думаю, можно закончить на этом
0
|
||||||
|
Just Do It!
|
||||||||||||
| 20.06.2021, 10:33 | ||||||||||||
|
но зачем же пример мой так извратили то? ![]() раскомментируйте то, что должно изначально быть, а потом на меня ссылайтесь! Там именно пользовательский свап, а не библиотечный, вместо него может быть всё, что угодно! ![]() hoggy, ваще, потрудились бы показать свой пример, а не передергивать мя. ![]() анекдот
Кто-то написал коммент, чтобы показать как оно правильно:
ЛУЧШЕ ТАК:
0
|
||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 20.06.2021, 13:53 | ||||||||
|
в моём случае, нельзя сказать, что я что-то извратил. поскольку, после того как я выбросил из кода совершенно бесполезный пользовательский свап, функциональность вообще никак не изменилась. из чего лично ты должен сделать вывод: твой пользовательский свап действительно бесполезен. а потом задай себе вопрос: зачем ты пишешь код, в котором используются бесполезные вещи? у грамотных людей в коде не может быть всё, что угодно. только необходимое и уместное. 1. взял твой пример. 2. убрал бесполезный хлам. 3. PROFIT ???!!!! запоспостил код с бесполезным хламом. и думает, что это правильно. замечательный анегдот.
0
|
||||||||
| 20.06.2021, 13:53 | |
|
Указатели и ссылки Ссылки, указатели Указатели и ссылки
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2.
Задача: контроль уникальности строк в. . .
|
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
|
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
|
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
|
|
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
|
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
|
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока
Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
|
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов
• Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp
• Смежный проект:. . .
|