Страница 1 из 1

Что-то у меня с наследованием не ладится

Добавлено: 2009-05-18 15:56:31
de-signer
Тестовая прога:

Код: Выделить всё

#include <stdio.h>

class Child;

class Parent {
public:
	Parent() { printf("Parent constructor\n"); }
	~Parent() { printf("Parent destructor\n"); }
};

class Child : public Parent {
public:
	Child() { printf("Child constructor\n"); }
	~Child() { printf("Child destructor\n"); }
};

int main (void) {
	Parent *parent;
	Child *child;

	parent = new Child;
	printf("\ndoing something\n\n");
	delete parent;

	return 0;
}
Результат:

Код: Выделить всё

Parent constructor
Child constructor

doing something

Parent destructor
Ожидалось:

Код: Выделить всё

Parent constructor
Child constructor

doing something

Child destructor
Parent destructor
Где я торможу?
Если заменить child = new Child - то всё ок.
В общих чертах нужно сделать список из объектов разного типа с обним родителем. Судя по тесту - список-то создастся правильно, а вот при разрушении - начнутся чудеса!

Re: Что-то у меня с наследованием не ладится

Добавлено: 2009-05-18 16:01:52
paradox
помоему деструктор в паренте должен быть виртуальным
точно уже не помню
но методом проб и ошибок можно понять
пробуй

Re: Что-то у меня с наследованием не ладится

Добавлено: 2009-05-18 16:04:24
de-signer
paradox - огромное спасибо... совсем забыл.