|
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
|
||||||||||||||||
Указатели - отстойные ссылки?18.06.2021, 17:10. Показов 6220. Ответов 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
|
||||||||||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 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
|
||
|
Гвоздь Задиров
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
|
||
| 19.06.2021, 15:55 | ||
|
Эт такая косвенная сортировка там.
0
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||
| 19.06.2021, 15:57 | |||
T у swap.
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 19.06.2021, 16:00 | ||||||||
|
а вот ты меня, похоже, не очень. ты смотришь на неккий "профит", "крутизну" инструмента. я ж тебе пытаюсь донести: забей на профит, смотри на уместность можешь смело удалить эту обертку из кода, и ничего вообще не изменится:
когда человек не осознает, когда уместно применять инструмент, а когда нет.
0
|
||||||||
|
Гвоздь Задиров
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
|
||||||
| 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
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||||||||
| 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 | |
|
Помогаю со студенческими работами здесь
60
Указатели и ссылки Ссылки, указатели Указатели и ссылки
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|