|
63 / 35 / 13
Регистрация: 21.10.2010
Сообщений: 538
|
||||||
Зачем в случае присваивания делают ссылку/указатель на аргумент константным04.08.2011, 17:45. Показов 2225. Ответов 8
Метки нет (Все метки)
Здравствуйте, позвольте я задам вопрос по С++
1)
0
|
||||||
| 04.08.2011, 17:45 | |
|
Ответы с готовыми решениями:
8
Как получить ссылку на указатель или указатель на указатель в массиве? Зачем делают каталоги? Зачем нужен указатель на указатель при работе с однонаправленным списком? |
|
Заблокирован
|
||
| 04.08.2011, 17:49 | ||
|
Имеет смысл передавать по ссылке классы, так как при передачи их по значению вызываются конструкторы, которые влекут за собой накладные расходы. То есть при передаче класса по значению в качестве аргумента, во-первых, вызывается конструктор для создания копии значения, а при завершении функции вызывается деструктор этого класса. Если вы не собираетесь в своей функции менять объект класса, то лучше передать его по константной ссылке. Размер ссылки, фактически, равен размеру int, то есть обычно занимает одно машинное слово, и никакие конструкторы и деструкторы не вызываются. А для объектов класса при передачи их по значению в стеке создается к тому же копия этого класса, а классы могут быть очень громоздкими!
1
|
||
|
Заблокирован
|
|||||||
| 05.08.2011, 16:25 | |||||||
|
То есть эти два варианта
0
|
|||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 05.08.2011, 16:28 | |
|
Сыроежка, А это уже дело программиста. + к тому функция может быть изменена. Но int действительно нет резона передавать по const ссылке.
0
|
|
|
|
|||
| 05.08.2011, 16:53 | |||
. Мне почему-то показалось, что ТС имел в виду аргумент любого типа, просто пример привел неудачный. А так-то само собой разницы нет.
0
|
|||
|
Заблокирован
|
||
| 05.08.2011, 16:59 | ||
Если память не изменяет, то посмотрите, например, определение функции strchr в стандарте языка С.
0
|
||
|
|
||
| 05.08.2011, 17:22 | ||
![]() Тут уже виноваты возможности языка. Собственно подобные функции часто используются, чтобы "найти и заменить", поэтому возвращаемый указатель должен быть неконстантным. Для поиска естественно использовать константный указатель. Как иначе обеспечить подобное поведение функции в языке Си, лично я не знаю Но С++ в этом плане более строгий, а мы говорим о Си++
0
|
||
|
Заблокирован
|
||||||
| 05.08.2011, 17:24 | ||||||
|
Да, в С++ выкрутились из ситуации посредством перегрузки этих функций. На самом деле проблема более глубокая, чем кажется на первый взгляд.
Рассмотрим ту же С-функцию strchr. Она объявляется примерно следующим образом char * strchr( const char *s, int c ); ВЫ уже сказали, почему так делается. Но и это определение некорректное! Дело в том, что в функцию может передаваться строка, которая до этого была объявлена именно как константная! А мы из функции возвращаем на нее неконстантный указатель! То есть, фактически, имеет место следующий код:
0
|
||||||
| 05.08.2011, 17:24 | |
|
Помогаю со студенческими работами здесь
9
Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель Зачем иногда так делают? Зачем люди делают каталоги? Зачем и с какой целью это делают?! Зачем на современных сайтах делают кучу вложенных дивов ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
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. . .
|