Конструкто копирования, в каких случаях должен вызываться? |
Здравствуйте, гость ( Вход | Регистрация )
Конструкто копирования, в каких случаях должен вызываться? |
kwisp |
14.6.2010, 14:20
Сообщение
#1
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
внимание вопросы: 1. сколько раз при вызове setParent(parent) вызовется конструктор копирования? 2. сколько раз при вызове getParent(11) вызовется конструтор копирования? П.С. если прилагаете к ответу консольный вывод программы указывайте пожалуйста версию компилятора и ОС. |
|
|
Litkevich Yuriy |
14.6.2010, 16:43
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
1) 2
2) 1 |
|
|
kwisp |
15.6.2010, 10:19
Сообщение
#3
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Litkevich Yuriy,
проверял? |
|
|
Влад |
15.6.2010, 12:36
Сообщение
#4
|
Участник Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8 |
Юрий совершенно прав. Теоретически должно быть именно так.
На практике, однако, компилятору разрешено проводить RVO, поэтому реальные результаты могут отличаться от ожидаемых. Впрочем, это сильно зависит как от компилятора, так и от опций оптимизации. В чем же тогда смысл вопроса? |
|
|
kwisp |
15.6.2010, 12:52
Сообщение
#5
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Влад,
вот и хотелось бы разобраться и с компилятором и с опциями оптимизации. у меня на деле 1) 2 2) 0 ! П.С. ну и чисто риторически как к примеру человеку не знакомому с С++ доказать и показать на практике как и что происходит. вот к примеру школьникам. gcc версия 4.3.4 |
|
|
Litkevich Yuriy |
15.6.2010, 13:32
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Влад |
15.6.2010, 15:31
Сообщение
#7
|
Участник Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8 |
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 |
|
|
Текстовая версия | Сейчас: 1.12.2024, 10:23 |