Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700

Возврат копии значения из функции

10.01.2017, 10:38. Показов 5882. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сегодня нашел информацию о том, что можно сохранять ссылку на временный объект, например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int foo()
{
    int a = 5;
    return a;
}
 
int main()
{
    const int& num = foo();
    std::cout << num;
}
Но если не указать что принимающая результат функции переменная num является ссылкой, получится двойное копирование(иначе какой смысл иметь возможность ссылаться на временный объект)?
То есть одна копия будет создана при возврате переменной int a внутри функции foo, а вторая при присвоении результата работы foo переменной num?

Сделал следующие выводы:
Если значение переменной присваивается из временного объекта и результат не подлежит модификации, то в целях оптимизации нужно использовать константные ссылки на временные объекты, там самым продлив жизнь временного объекта до удаления константной ссылки на него.

Правильно ли я все понял?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.01.2017, 10:38
Ответы с готовыми решениями:

Возврат значения из функции
Добрый вечер. Вопрос следующий , как возвратить из функции create последнее значение ЛС , чтоб в дальнейшем использовать в main. ...

Возврат значения функции
Что такое возврат значения функции? я уже всю голову изломал, что и куда возвращается? в гугле нашёл мол возвращается результат (куда? в...

Неправильный возврат значения функции
При компиляции если значение меньше или равно 100 программа прекращает работу а если значение выше 100 то работает нормально. ...

21
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
11.01.2017, 14:19  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
И это на самом элементарном уровне. А если принять во внимание оптимизации типа RVO, которые вообще полностью исключают какие-либо копирования, то все ваши рассуждения полностью вылетают в трубу. Никакой разницы тут нет.
Спасибо. А как считаете может лучше все таки применять? Так бывает точная уверенность в том что дополнительной копии не будет. А если явно не применить, тогда уже это оставляется на совесть компилятора
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
11.01.2017, 15:03
Цитата Сообщение от sys_beginner Посмотреть сообщение
Так бывает точная уверенность в том что дополнительной копии не будет
Частенько своими действиями программисты мешают компилятору.
RVO/NRVO/Copy Elision слишком популярные и эффективные оптимизации, чтобы их игнорировать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.01.2017, 15:03

Возврат любого значения из функции
Здравствуйте, всем. есть функция принимающая массив char, она может вернуть любой тип данных, char или int. Но у меня не получается это...

Возврат значения из полиморфной функции
Доброго времени суток всем. Ребят не знаю как правильно сформулировать свой вопрос. Суть вот в чем: В базовом классе Cell определена...

Возврат значения через параметр функции
Пишу функцию,которая должна создавать динамическую матрицу,а затем возвращать ее через параметр. Правильно ли я понимаю,что для этого надо...

Двумерные массивы и возврат значения из функции
Доброго времени суток уважаемые фуромчане! Решил обратиться к более опытным людям ибо сам допереть не могу:) Ситуация вот в чём.Нужно...

Возврат копии структуры из другого класса
Как можно копию структуры из одного класса передать в другой? (именно чтоб она изначально в private была) Сам только до такой вариант...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru