Estoy intentando entender los destructores virtuales y tengo el siguiente codigo:
Código c++:
Ver original#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <cstring>
class BASE
{
public:
char *cadena;
virtual ~BASE()
{
delete[] cadena;
}
virtual void Hablar()
{
std::cout << cadena << std::endl;
}
};
class DERIVADA : public BASE
{
public:
char *cadena;
~DERIVADA()
{
delete[] cadena;
}
virtual void Hablar()
{
std::cout << cadena << std::endl;
}
};
int main(int argc, _TCHAR* argv[])
{
BASE *base = new DERIVADA;
delete base;
return 0;
}
Me da un error en tiempo de ejecucion ¿porque? ¿que estoy haciendo mal?