Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Infiltrator
Зарегистрирован: 26.12.2003 Сообщения: 2 Откуда: Moscow
|
Добавлено: Пт Дек 26 2003 14:08 Заголовок сообщения: простенький вопросик по C++ |
|
|
простенький вопросик по C++
суть :
есть два класса - базовый и порожденный.
в базовом классе используются динамические данные, и соответственно есть деструктор.
в порожденном есть свои динамические данные.
вопрос :
нужно ли в порожденном классе писать деструктор для данных базового класса + для своих, либо только для своих ? |
|
Вернуться к началу |
|
|
X-M@n Гость
|
Добавлено: Пт Дек 26 2003 14:40 Заголовок сообщения: -> Простенький вопросик |
|
|
Пиши только для унаследованного класа. Его деструктор вызовет деструктор для базового. |
|
Вернуться к началу |
|
|
GDI Гость
|
Добавлено: Ср Дек 31 2003 14:38 Заголовок сообщения: |
|
|
Вообще-то деструктор наследника должон вызывать и деструктор родителя, но можно осуществит это самому, что бы совесть была чиста |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Ср Дек 31 2003 16:20 Заголовок сообщения: |
|
|
а будет ли чиста совесть если delete 2 раза по одному и тому-же месту ? |
|
Вернуться к началу |
|
|
SergeyV Гость
|
Добавлено: Пт Янв 02 2004 02:18 Заголовок сообщения: Re: простенький вопросик по C++ |
|
|
В каждом классе в деструкторе удаляй лишь те данные, которые в этом классе создал, так в будущем сумеешь избавиться от досадных ошибок.
И еще совет: делай деструкторы всегда виртуальными, это тоже убережет тебя от утечки памяти в некоторых ситуациях |
|
Вернуться к началу |
|
|
совсем незнакомый
Зарегистрирован: 24.12.2003 Сообщения: 183 Откуда: Israel
|
Добавлено: Пт Янв 02 2004 18:13 Заголовок сообщения: |
|
|
если проблема - утечки памяти наплохая штучка -
умные пойнтеры (см. в инете: smart pointers)
удачи. |
|
Вернуться к началу |
|
|
GeX
Зарегистрирован: 03.01.2004 Сообщения: 60 Откуда: Россия, Иркутск
|
Добавлено: Вт Янв 06 2004 10:37 Заголовок сообщения: |
|
|
А еще чтобы ловить утечки памяти есть очень хорошая примочка к Visual C++ 6.0, называется Bounds Checker от компании NuMega. Я без нее никуда, и вам всем советую. |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Вт Янв 06 2004 15:44 Заголовок сообщения: про утечку памяти |
|
|
class a
{
...
};
...
A *a;
for( int i=0; i<10; i++ )
{
a = new A;
printf( "%p\n", a );
delete a;
}
Случай, конечо, простейший, но! Если утечки памяти нет, то значение указателя меняться не будет, а если есть - можно узнать сколько байт каждый раз теряется. |
|
Вернуться к началу |
|
|
|