Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347

Время жизни временного объекта

07.09.2013, 15:19. Показов 2236. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
можно ли передать временный объект в функцию по ссылке?

C++
1
2
3
4
5
6
7
void f1(int & );
 
.....
 
int main() {
 
f1(int());
компилятор ошибок не выдает. Вопрос в том действует ли фокус с ссылкой, или это просто компилятор оптимизирует код?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.09.2013, 15:19
Ответы с готовыми решениями:

Время жизни объекта
Доброго времени суток, объясните пожалуйста, как можно продлить время жизни объекта, который создан локально. В данном случае - есть...

Время жизни объекта класса
Всем привет! Вот возник у меня вопросс с ООП и разработкой больших программ. Большие ООП программы могут иметь много классов. Например...

"Время жизни переменной/объекта класса"
Здравствуйте, как правильней делать: есть класс A, в его конструкторе я объявляю переменную типа int и объекта класса. class B { ...

11
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
07.09.2013, 15:31
что за компилятор? у меня выдаёт!
0
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
07.09.2013, 15:32  [ТС]
C++ Builder 6
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
07.09.2013, 15:40
Builder'а у меня нет, но могу предположить, что если он по умолчанию считает, что функции возвращают int, то
C++
1
f1(int());
можно прочитать как объявление функции f1, возвращающей int, с безымянным параметром типа int.

Добавлено через 1 минуту
Напиши в этой f1 что-нибудь и посмотри, выполняется ли она, тогда будет понятно, объявление это или вызов.
0
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
07.09.2013, 15:43  [ТС]
Так в чем фокус? Что в функцию пойдет? Адрес или копия объекта?
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
07.09.2013, 16:11
Так ты уверен, что это именно вызов функции?
0
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
07.09.2013, 16:15  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int f1(int &q)
{
q = 3;
return q;
}
 
int main() {
 
cout<<f1(int());
 
getch();
return 0;
}
такая запись работает - значит функция.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
07.09.2013, 16:16
Смотри тогда ассемблерный листинг (с отключенной оптимизацией лучше).
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
07.09.2013, 16:22
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
void f1(int &)
{
}
 
int main()
{
    f1(int());
}
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-*- mode: compilation; default-directory: "~/samples/cpp/" -*-
Compilation started at Sat Sep  7 23:20:56
 
cmake --build /home/nameless/samples/cpp/bin/
[100%] Building CXX object CMakeFiles/sample.dir/main.cc.o
/home/nameless/samples/cpp/main.cc: In function ‘int main()’:
/home/nameless/samples/cpp/main.cc:9:13: error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’
     f1(int());
             ^
/home/nameless/samples/cpp/main.cc:3:6: error: in passing argument 1 of ‘void f1(int&)’
 void f1(int &)
      ^
make[2]: *** [CMakeFiles/sample.dir/main.cc.o] Ошибка 1
make[1]: *** [CMakeFiles/sample.dir/all] Ошибка 2
make: *** [all] Ошибка 2
 
Compilation exited abnormally with code 2 at Sat Sep  7 23:20:57
Вывод: ищи нормальный компилятор.
1
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
07.09.2013, 16:28  [ТС]
Да фиг уже с ним. раз не по стандарту - значит не по стандарту.
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
07.09.2013, 16:33
no_wearines, на самом деле, по (новому) стандарту ссылки на временные объекты (rvalue references) допускаются. К примеру, такой код уже скомпилируется:
C++
1
2
3
4
5
6
7
8
void f1(int &&)
{
}
 
int main()
{
    f1(int());
}
Однако, шестой билдер, насколько я знаю, новый стандарт не поддерживает, ну и предназначение rvalue references немного другое.
1
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
07.09.2013, 17:27
По крайней мере:
C++
1
void f1(const int &)
должно и в билдере работать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.09.2013, 17:27
Помогаю со студенческими работами здесь

Копирование из временного объекта
1) Собственно, как работает такой конструктор? Хотелось бы какой-нибудь пример. 2) Сильно ли различаются по скорости new/notthrow...

Возвращение временного объекта из метода
Доброго времени суток,господа! Сразу к делу: Имеется следующий код: struct Test { int a; //Lets just exist Test(){}...

Как избежать постоянных инициализаций временного объекта?
Здравствуйте! Будет ли этот код class my::testBuffer{ //код А private: int data; public: testBuffer(const int&amp; d ) :...

Почему для временного безымянного объекта не вызывается оператор ()?
Почему AddValue(value)(*pos); не вызывает operator()(int &amp;elem) из класса AddValue? class AddValue { public: AddValue(int...

Время жизни переменных
Добрый вечер. у меня такая проблема. мне нужно перегрузить функцию для моего класса: numb numb::operator +(const numb &amp;p)const { ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru