Предположим, у меня есть этот кодC++ - виртуальный деструктор, который по-прежнему необходим, если нет элементов данных в производном?
class Base{
public:
int getVal();
private:
int a, b;
};
class Derived::public Base{
public:
void printVal();
};
int main(){
Base *b = new Derived();
delete b;
}
Я знаю, виртуальный деструктор удалит вещи правильно, но это плохо, чтобы удалить с базового указателя (если нет виртуального деструктора), даже если нет никаких виртуальных функций и нет члены данных в производном классе? Что произойдет, если это будет сделано?
Спасибо, Дэвид. – snk
Опасно полагаться на вещи, которые, скорее всего, будут работать, и предположить, что вы «должны быть в порядке». Гораздо лучше написать код, который работает _will_, тогда вы, знаете, все в порядке. –
Джеймс, я буду уверен, что всегда есть виртуальный деструктор. Это просто гипотетический вопрос, заданный кем-то, и у него не было ответа. Еще раз спасибо вам. – snk