|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|
Передача объекта как аргумент функции07.02.2022, 10:37. Показов 583. Ответов 4
Метки нет (Все метки)
В функцию аргумент можно передавать разными способами, но бывает что возникает ошибка. Хочу прояснить ситуацию как правильно передавать в функцию объект.
1. как ссылку &obj - тут всё понятно если объект не константный или rvalue то передаётся в функцию и с ним можно работать как и вне функции; 2. как const &obj - тут тоже понятно если объект lvalue то преобразуется в const и его методы уже не доступны становится константным 3. как obj - вот тут у меня есть вопрос, предполагаю что создаётся временный объект конструктором копирования или перемещения, потом уничтожается, тут вот возникает ошибка. Как надо делать правильно чтобы этого не происходило?
0
|
|
| 07.02.2022, 10:37 | |
|
Ответы с готовыми решениями:
4
Передача функции в аргумент Передача типа переменной через аргумент функции |
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
||||
| 07.02.2022, 11:21 | ||||
|
Переданное lvalue будет скопировано (copied) и для того, чтобы это произошло корректно, нужен copy-конструктор. переданное rvalue будет перемещено (moved) и для того, чтобы это произошло корректно, нужен конструктор перемещения.
0
|
||||
|
Комп_Оратор)
|
||
| 07.02.2022, 12:12 | ||
|
Третий пункт это передача по значению. Как и водится в терминологии программирования, никакое значение не передаётся. Создаётся копия. Причём процесс "передачи" имеет семантику инициализации. То есть, в области оператора функции аргумент инициализируется копированием "передаваемого" (предоставляемого как шаблон для копирования) объекта. После окончания работы функции, все локальные объекты (включая аргументы) уничтожаются. Если есть деструктора, то они вызываются для этого. Если нет, но должны быть, - программист вызывается на ковёр и уничтожается компилятором. Морально.
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 07.02.2022, 16:03 | |
|
1
|
|
| 07.02.2022, 16:03 | |
|
Помогаю со студенческими работами здесь
5
Выбор вложенного объекта через аргумент в конструкторе другого объекта Передача функции заранее неизвестного объекта Передача объекта как аргумент в метод Ключ объекта как аргумент функции
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|