| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > когда происходит уничтожение временных объектов? |
| Автор: korian 20.2.2010, 19:50 | ||
безопасен ли данный код с точки зрения стандарта?
|
| Автор: artsb 20.2.2010, 19:56 |
| Да. А что смущает? |
| Автор: korian 20.2.2010, 20:01 | ||
| смущает вот это: func(A(5).getVal()); можно расписать так:
а вот как будет поступать компилятор по стандарту? |
| Автор: artsb 20.2.2010, 20:05 |
нельзя. Добавлено @ 20:06 Объект умрёт, когда функция вернёт управление. |
| Автор: korian 20.2.2010, 20:39 | ||
а если добавить еще одну функцию:
это тоже будет нормальным или уже неправильно? |
| Автор: artsb 20.2.2010, 20:53 |
нормально. Добавлено через 2 минуты и 54 секунды По сути, объект создаётся в main просто у него нет имени. И жить он будет до конца main (в посте выше я немного ошибся). |
| Автор: mes 20.2.2010, 21:04 | ||
не будет. если подправить пример :
то указатель p не валидный |
| Автор: artsb 20.2.2010, 21:08 | ||||
Отлично работает:
Добавлено через 3 минуты и 1 секунду И вот так (хотя особой разницы нет):
|
| Автор: mes 20.2.2010, 21:12 |
и это Вы называете проверкой ? добавьте индикацию в деструктор и увидите своими глазами (если конечно компилятор нормальный) |
| Автор: artsb 20.2.2010, 21:14 | ||
Предложите свой вариант. ВСВ6 Добавлено @ 21:17 mes прав
Выводит 4. Добавлено @ 21:20 Значит я изначально почти правильно сказал. Когда вернёт управление внешняя функция, объект умрёт. |
| Автор: mes 20.2.2010, 21:30 |
| Автор: artsb 20.2.2010, 22:59 |
| Ну вот мы и нашли согласие |