![]() |
|
Модераторы: bsa |
![]()
|
|
| Folk |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 25.5.2008 Репутация: нет Всего: нет |
Всем доброго времени суток.
Прошу пояснить некоторую ситуацию. Я использую VS 2005, хотя думаю это непринципиально. Есть такой простой класс:
Если сделать так:
то в консоли увидим:
Откуда взялись два вызова дуструктора после создания объекта? И ещё, если сделать так:
То в консоли видим:
Тут два вопроса: 1. Почему конструктор вызван единожды? 2. Опять же, откуда 3 вызова дектрукторов сразу после создания объектов? Заранее спасибо. |
||||||||||
|
|||||||||||
| anatox91 |
|
|||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: 1 Всего: 13 |
по-моему это разрушается еще и временный объект
-------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Не забываем про то, что бывают конструкторы по умолчанию и для подобных тестов их надо перегрузить :
Это сообщение отредактировал(а) mes - 25.5.2008, 10:41 |
||||
|
|||||
| Folk |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 25.5.2008 Репутация: нет Всего: нет |
Ага, тогда с твоим вариантом класса и таким вот кодом:
Получаем вот это:
Стало быть при добавлении нового элемента в вектор внутри создаётся ещё две рабочие копии исходного объекта. А если у меня массивные объекты, жрут много памяти и при копировании объекта требуется выполнение множества операций, то при одном добавлении такого объекта в вектор я получу огромную потерю просто из-за того, что он создаёт две временные копии? |
||||||
|
|||||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
Да. Поэтому надо хранить указатели в каких-то обертках. |
|||
|
||||
| Folk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 25.5.2008 Репутация: нет Всего: нет |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| Folk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 25.5.2008 Репутация: нет Всего: нет |
Спасибо всем за ответы, теперь стало ясно!
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |