![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
имеем код
Как Вы думаете, что выведется на экран? Кто что вообще думает о том, что тут написано? Это сообщение отредактировал(а) Fazil6 - 13.7.2007, 20:16 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
UB, ибо временный объект сконструированный из сторки "rrrr..." уничтожится(может уничтожиться) в конце sequence point. Т.е до вызова второго CheckMaximum. Думаю, что не хватает комментария к ф-ции, что "несмотря на то, что аргументы представляют из себя константные ссылки, эти ссылки могут быть использованны вне ф-ции(после её завершения), т.о. не рекомендуется вызывать ф-цию с аргументами, ссылающимися на временные объекты". -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
эх... если бы я знал, когда уничтожается временный объект, то ответил точно... А так есть подозрение, что может сегфолт вывалится при втором сравнении.
![]() |
|||
|
||||
archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Точно. Не может, а именно должен удалится в конце выражения.
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
Doc_d0s |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: 2 Всего: 3 |
думаю стоит сделать копирование длинной строки в функции...
--------------------
Админ- это вождь Apache'й :) |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Doc_d0s, в вышеозвученном примере одного изменения недостаточно будет. Нужно либо изменить тип возвращаемого значения(убрать ссылку, дабы копировалось) и изменить "клиентский" код, чтобы сохранялась не ссылка, а полностью значение. Для ref-counted строк overhead'а по идее не будет.
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |