Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите по наследованию... / 4 сообщений из 4, страница 1 из 1
20.04.2005, 10:29
    #33024583
Serega128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по наследованию...
Т.е. имеем 2 класса: класс А и класс Б(унаследован от А). В кл. А деструктор виртуальный. В классе Б деструктор переопределён. При вызове деструктора для экземпляра класса Б, вызовется ли деструктор класса А? Если да, то в какой последовательности? Спасибо.
...
Рейтинг: 0 / 0
20.04.2005, 11:24
    #33024763
synapse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по наследованию...
Serega128Т.е. имеем 2 класса: класс А и класс Б(унаследован от А). В кл. А деструктор виртуальный. В классе Б деструктор переопределён. При вызове деструктора для экземпляра класса Б, вызовется ли деструктор класса А? Если да, то в какой последовательности? Спасибо.

При удалении объекта производного класса, на который ссылается указатель базового класса если деструктор объявлен как виртуальный, то будет вызван деструктор соответствующего производного класса. Затем деструктор производного класса вызовет деструктор базового класса и объект будет правильно удален.
...
Рейтинг: 0 / 0
20.04.2005, 11:36
    #33024789
synapse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по наследованию...
Все очень лкгко проверить с помощью очень простой программки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
class Base
{
public:
virtual ~Base(){printf("base destructor");}
};

class Derived:public Base
{
public:
~Derived(){printf("derived destructor");}
};

int main()
{
Base *pBase=new Derived;
delete pBase;
return  0 ;
}
_______________________________________________________________
@Мы медленно запрягаем, быстро ездим, и сильно тормозим.@
...
Рейтинг: 0 / 0
20.04.2005, 12:19
    #33024938
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по наследованию...
Serega128Т.е. имеем 2 класса: класс А и класс Б(унаследован от А). В кл. А деструктор виртуальный. В классе Б деструктор переопределён.


Деструктор всегда переопределен, в любом классе. Либо явно, либо неявно.

Serega128
При вызове деструктора для экземпляра класса Б, вызовется ли деструктор класса А? Если да, то в какой последовательности? Спасибо.


Да, после выхода из деструктора наследника.

Конструируются объекты (вызываются конструкторы) всегда в таком порядке :
предки класса

члены класса

сам класс (его конструктор)
Уничтожаются объекты в обратном порядке : сначала сам деструктор данного класса, затем деструкторы членов и затем деструкторы базовых классов.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите по наследованию... / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]