So I has these Base class and sub class.
#include <iostream>
class BaseDevice
{
public:
    int _pin;
    BaseDevice() { std::cout << "base constructor\n"; }
    virtual void read() = 0;
    virtual ~BaseDevice() { printf("destroyed base\n"); }
    void debugThis() { printf("debug %i \n", _pin); }
};
class Morse : public BaseDevice
{
public:
    Morse(int pin) : BaseDevice() { _pin = pin; }
    ~Morse() { printf("destroyed morse\n");}
    void read() { std::cout << "read"; }
private:
};
int main()
{
    BaseDevice *morse[5];
    morse[0]  = new Morse(13);
    morse[0]->debugThis();
    morse[1] = new Morse(6);
    morse[1]->debugThis();
    delete morse[1];
    morse[1]->debugThis();
    return 0
}
So when I delete morse[1], it says it destroyed 'morse' & 'baseDevice'… But when I called morse[1]->debugThis() right after the delete, it's still printed out the _pin = 6. So the object pointer is still there. It's not deleted/destroyed?
 
     
    