|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.01.2010, 23:14 | #11 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Цитата:
Ну а во втором случае, видимо, объект создаётся прямо в стеке вызываемой функции?.. Интересная оптимизация, при чём происходит даже при отключённых оптимизациях, то ли свойство языка, то ли баго-фича компилятора ) |
|
17.01.2010, 23:37 | #12 |
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
|
[QOUTE]"неявно созданный конструктор копии"[/QOUTE]
Как это понять? конструтор не может быть неявно созданным, если ты его определил, то твой конструктор и вызывется, и при создании локальной копии объекта в функции тоже должен был вызваться конструктор, который определил программист... Получается, что однажды вызвался конструктор без параметров, вопрос в том - когда?! И еще такой домысл - в вызове создается безымянный объект, для негго нужен конструтор, а потом в функции создается локальная копия безымянного объекта, и опять же конструктор вызваться должен был? возможно, конструктор копирования, который и был определен, стало быть ничего выводить не должен был - отсюда две надписи дестр и одна констр....
Если я помог вам - порадуйте меня, нажмите на весы слева
|
17.01.2010, 23:58 | #13 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Цитата:
|
|
18.01.2010, 00:07 | #14 |
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
|
Ну да, с этим не спорю, деструктор, конструктор копирования, просто конструктор, оператор "=" создаются неявно для любого класса
Если я помог вам - порадуйте меня, нажмите на весы слева
|
18.01.2010, 16:00 | #15 |
Регистрация: 16.01.2010
Сообщений: 8
|
Да особо удивительного тут нет ничего. В первом случае вызывается конструктор копии по умолчанию, который создаёт побитовую копию объекта, второй раз вызывается конструктор копии, который присутствует в классе. При передаче объекта функкции или возврате объекта из функции вызываются именно конструкторы копии, а не обычные конструкторы. Если бы вызывались обычные конструкторы, то объек терял бы свою индивидуальность при передаче в функцию.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Си++. Передача массива в функцию. | Diamond2107 | Помощь студентам | 7 | 03.12.2009 20:15 |
Передача поля объекта в процедуру в качестве параметра | Голованов Д. | Microsoft Office Excel | 10 | 02.11.2009 16:22 |
Передача массива в функцию | D[I]K | Общие вопросы C/C++ | 4 | 13.09.2009 21:31 |
передача массива в функцию | JOFRIF | Общие вопросы C/C++ | 8 | 02.08.2009 12:46 |
Передача массива в функцию | Vistar | Общие вопросы C/C++ | 1 | 27.04.2009 08:08 |