![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| bel_nikita |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Создаю вектор следующим образом:
Пихаю элемент в вектор, вот, таким макаром:
А вот теперь вопрос:
Удаляет ли объект cTestHDLC, т.е. вызывает его деструктор? Или просто очищает сам вектор? Это сообщение отредактировал(а) bel_nikita - 18.5.2004, 14:17 |
||||||
|
|||||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Просто очищает вектор. Иначе он убил бы память, которую выделил ты сам (ну если бы выделил)
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| bel_nikita |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Так я и выделяю ее:
Значит корректная очистка в этом случае:
Это сообщение отредактировал(а) bel_nikita - 18.5.2004, 14:50 |
||||||
|
|||||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Да. Только строчка m_pVector[i]=NULL; в таком алгоритме не нужна. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
...потому что самостоятельно очищать вектор мы будем только 1 раз (в деструкторе какого-то объекта, вестимо), а clear()-у "всё равно", какое значение имеет указатель, т.к. clear() лишь выполняет вызов деструктора для каждого объекта, хранимого в векторе - а в данном случае в векторе хранятся указатели (деструктор для указателя ?.. то же самое что деструктор для int-а). -------------------- ![]() |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Прошу прощения не заметил -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
если .clear() вызывает деструктор объекта (т.е. оператор delete), то программа свалится. А значит .clear() разрушает объекты З.Ы. че-та написал, но не знаю понятно ли? |
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
я специально ведь написал выше:
-------------------- ![]() |
||||
|
|||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
У тебя три вещи:
vector.clear() разрушает S(ты же хочешь обьектом вектора дальше в программе пользоваться). А вот Е* никаким методом вектора разрушить нельзя. Это что же будет такое(!?) добавил обьект в вектор, вектор исчез и обьект тоже? Это сообщение отредактировал(а) sergej.z - 18.5.2004, 15:51 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |