Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
#1

Где выделяется память для возвращаемого значения функций? - C++

31.10.2012, 22:01. Просмотров 662. Ответов 4
Метки нет (Все метки)

Собственно возник вопрос, корректен ли такой код:
есть некая функция, которая возвращает объект класса MyClass:
C++ (Qt)
1
MyClass someFunction();
Можно ли писать такой код:
C++ (Qt)
1
2
3
4
5
{
...
MyClass & mc  = someFunction();
...
}
чревато ли это какими-то ошибками, если да то какими, если нет, то где написано, что нет? :-)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2012, 22:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Где выделяется память для возвращаемого значения функций? (C++):

Не выделяется память - C++
Здравствуйте, пытаюсь выделить память, на одном компьютере работает, на другом нет, возвращает 0x00000000, хотя память имеется в наличии. В...

программа работающаю с динамической матрицей(память выделяется динамически) трабл с подсчетом строк в файле - C++
В матрице найти минимальный элемент. Разделить элементы строки, в которой он находится, на найденный минимальный элемент. обязательно...

Почему для объявления функций порядок не имеет значения? - C++
Добрый день! Вот никак не могу понять почему порядок объявлений функций не строгий, а если функции описывать до ф-и main(), то там...

Тип возвращаемого функцией значения, для вставки в ComboBox - C++ Builder
Какого типа должно быть возвращаемое значение, если я получаю от функции список строк для вставки в объекты TComboBox или TTabControl? ...

Сложности с типом возвращаемого значения Серийного номера - C++ Builder
Считываю серийный номер флешки с помощью API-функции GetVolumeInformation, но проблема в том, что эта функция возвращает серийный номер в...

Где выделяется память под объекты - Delphi
Здравствуйте.Подскажите ,пожалуйста ,с небольшим недопониманием насчёт выделения памяти под объекты. Например ,есть функция ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.11.2012, 02:31 #2
Можно ли писать такой код:
Нет. Вы пытаетесь получить ссылку на временный объект. Вместо этого вы можете использовать const reference или rvalue reference.
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
01.11.2012, 10:20  [ТС] #3
Цитата Сообщение от soon Посмотреть сообщение
Вы пытаетесь получить ссылку на временный объект
а за счет чего он временный то? если я работаю со ссылкой внутри области видимости функции ИМХО - все норм. в общем ткните носом в лит-ру, а то я как-то не встречал нигде такого запрета.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.11.2012, 10:55 #4
Цитата Сообщение от n3337 § 12.2
Temporaries of class type are created ... returning a prvalue(6.6.3)
Цитата Сообщение от n3337 § 3.10
A prvalue (“pure” rvalue) is an rvalue that is not an xvalue. [Example: The result of calling a function whose return type is not a reference is a prvalue]
С++03 позволяет принимать/передавать временные объекты только по константной ссылке. В C++11 добавлен тип rvalue reference.
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
01.11.2012, 11:19  [ТС] #5
эх... печально... спс
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2012, 11:19
Привет! Вот еще темы с ответами:

Где выделяется память под массив - C (СИ)
Здравствуйте! Данный код является валидным и компилируется в gcc 5.3.1 без ошибок. По данному коду есть несколько вопросов. ...

Технология поиска передаваемых значений и тип возвращаемого значения функций - Assembler
Здравствуйте! Я не знаю в правильный ли раздел я создал этот пост, но вопрос в следующем: у меня есть dll и программа, которая использует...

Можно ли при декларации API функций менять тип возвращаемого значения? - Visual Basic .NET
Всем здравствуйте. Часто при объявлении API функций возвращаемое значение Boolean меняют на Integer. Declare Function SetCommState Lib...

Выделяется ли память для ссылки? - C++
Добрый день есть код: char a = 'd'; char *ptr = &a; char &link = a; Вопрос в том, что такое link? Отдельный объект или просто...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.11.2012, 11:19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru