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

C++

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

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

31.10.2012, 22:01. Просмотров 660. Ответов 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++
Добрый день есть код: char a = 'd'; char *ptr = &a; char &link = a; Вопрос в том, что такое link? Отдельный объект или просто...

Неправильно выделяется память для массива - C++
не правильно выделяется память для массива double *CDispersia_SPMDlg::Function_Spectr(double * _y_noise, int yslovie, double...

Какую структуру имеет память которая выделяется для роботы программы на С++ - C++
Какую структуру имеет память которая выделяется для роботы программы на С++?

Если память для объекта выделяется динамически (строка 33), сортировка sort не работает - C++
Если память для объекта выделяется динамически (строка 33), сортировка sort не работает, если память не выделять, все работает. Как...

Ключевое слово const для возвращаемого значения из функции - C++
Думал что это означает следующее "Нельзя изменить значение которое вернет функция" Но проверил и оказалось что это не так #include...

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

Не выделяется память - C++
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; class DynArray { public: int size, end; int...

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

Выделяется ли память? - C++
Доброе время суток! У меня есть BYTE *pOutData = NULL; Объясните пожалуйста что происходит в следующем: strcpy(cToken, "Задан...

Не выделяется память в динамической памяти - C++
Подскажите пожалуйста , почему при выполнении operator + (вызов 114 строка) не выделяется память в динамической области ? Получаю...

На каком этапе выделяется статическая память - C++
Если я создаю синглтон Маейрса: class Singleton { public: static Singleton& Instance() { static Singleton...

Как выделяется память под массив string? - C++
В общем читаю книжку, там объявлены два массива int* p = new int, int* v = new string... бла бла бла ....а потом -> ...После резервирования...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.11.2012, 02:31     Где выделяется память для возвращаемого значения функций? #2
Можно ли писать такой код:
Нет. Вы пытаетесь получить ссылку на временный объект. Вместо этого вы можете использовать const reference или rvalue reference.
Maxim Prishchepa
Эксперт С++
1920 / 1032 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
01.11.2012, 10:20  [ТС]     Где выделяется память для возвращаемого значения функций? #3
Цитата Сообщение от soon Посмотреть сообщение
Вы пытаетесь получить ссылку на временный объект
а за счет чего он временный то? если я работаю со ссылкой внутри области видимости функции ИМХО - все норм. в общем ткните носом в лит-ру, а то я как-то не встречал нигде такого запрета.
soon
2538 / 1303 / 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
Эксперт С++
1920 / 1032 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
01.11.2012, 11:19  [ТС]     Где выделяется память для возвращаемого значения функций? #5
эх... печально... спс
Yandex
Объявления
01.11.2012, 11:19     Где выделяется память для возвращаемого значения функций?
Ответ Создать тему
Опции темы

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