Здравствуйте, гость ( Вход | Регистрация )
Влад | Дата 15.6.2010, 15:31 |
kwisp: У меня экспериментальные результаты таковы: GCC 4.5 (и 4.4 тоже) выдает 1). 2 2). 0 как в режиме Debug, так и в режиме Release. В отличие от него, MS Visual C++ 2005 в режиме Debug: 1). 2 2). 1 в режиме Release: 1). 2 2). 0 |
|
Litkevich Yuriy | Дата 15.6.2010, 13:32 |
проверял? нетвидимо во втором случае, локальный объект не уничтожается, ради экономии времени и памяти, а просто возвращается ссылка на него. |
|
kwisp | Дата 15.6.2010, 12:52 |
Влад, вот и хотелось бы разобраться и с компилятором и с опциями оптимизации. у меня на деле 1) 2 2) 0 ! П.С. ну и чисто риторически как к примеру человеку не знакомому с С++ доказать и показать на практике как и что происходит. вот к примеру школьникам. gcc версия 4.3.4 |
|
Влад | Дата 15.6.2010, 12:36 |
Юрий совершенно прав. Теоретически должно быть именно так. На практике, однако, компилятору разрешено проводить RVO, поэтому реальные результаты могут отличаться от ожидаемых. Впрочем, это сильно зависит как от компилятора, так и от опций оптимизации. В чем же тогда смысл вопроса? |
|
kwisp | Дата 15.6.2010, 10:19 |
Litkevich Yuriy, проверял? |
|
Litkevich Yuriy | Дата 14.6.2010, 16:43 |
1) 2 2) 1 |
|
kwisp | Дата 14.6.2010, 14:20 |
внимание вопросы: 1. сколько раз при вызове setParent(parent) вызовется конструктор копирования? 2. сколько раз при вызове getParent(11) вызовется конструтор копирования? П.С. если прилагаете к ответу консольный вывод программы указывайте пожалуйста версию компилятора и ОС. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 23.4.2024, 19:40 |