|
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
|
||||||||||||||||
Указатели - отстойные ссылки?18.06.2021, 17:10. Показов 6717. Ответов 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 | |
|
Указатели и ссылки Ссылки, указатели Указатели и ссылки
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|