![]() |
|
Модераторы: bsa |
![]()
|
|
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Купник. Изучаем С++
Франка. Самоучитель С++ Шилдт. Базовый курс С++ Добавлено через 1 минуту и 41 секунду mes, спасибо большое |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
так тоже можно, чистые функции объявляются для того, если хотите использовать указатель на базовый класс как интерфейс, и объект подобного типа Вам не нужен. Это сообщение отредактировал(а) mes - 6.5.2009, 01:29 |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
mes, ещё раз спасибо за объяснения!
Значит в любом случае у деструктора должно быть тело ф-ии, даже если это чисто-виртуальный деструктор в абстрактном классе. P.S. Понимаю, что опытных программистов должно бы быть раздражает, когда говорят такие вещи, как я говорил здесь про память и указатели на неё, вроде "укзатель на базовый класс, ему выделяется память" - на самом деле уж это я понимаю, что выделяется память и адрес этой памяти присваивается указателю, а сказал небрежно, каюсь |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Да.
Создается объект. А выделение памяти это всего лишь один из этапов создания объекта. |
||||
|
|||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Не буду умничать
|
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
с delete всё нормально - вызывается деструктор, в если очищать вектор - не вызывается
Результат: выводит по пять строк "This is constructor А" и "This is constructor B", деструктор молчит. А если base *p=new A; затем delete p, то всё нормально, деструктор A вызывается Это сообщение отредактировал(а) Riddik - 6.5.2009, 02:08 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
естественно, В векторе Вы храните указатели, а не объекты. За удаление "реальных" объектов он не отвечает. Это сообщение отредактировал(а) mes - 6.5.2009, 02:17 |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Не понял, во втором сообщении Вы же ответили "только если он виртуальный в базовом" на вопрос "когда очищается контейнер таким способом, вызывается ли деструктор класса Monstr"
Сорри, уже поздно, наверное я плохо понимаю |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
сорри за невнимательность и за то что ввел в заблуждение, я там ответил только на половину вопроса - исправил. Ага, и на меня тоже сказывается Это сообщение отредактировал(а) mes - 6.5.2009, 02:26 |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Ясно
Вот так нормально самому память освобождать:
Это сообщение отредактировал(а) Riddik - 6.5.2009, 02:33 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
да
|
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Тогда вопрос решён - спасибо за всё
|
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
вот так будет универсальнее, напишите функтор
вызов
будет работать для любого (STL совместимого) контейнера Это сообщение отредактировал(а) azesmcar - 6.5.2009, 09:17 |
||||
|
|||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
azesmcar, благодарю.
|
|||
|
||||
![]()
|
| Правила форума "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. |