I am pretty new to this concept and I am confused that if a dangling pointer is a pointer which points to a memory location which points to memory which has been freed or deleted then in this case why it is still able to call the function test()
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
class MyClass{
    public:
    void test(){
        cout<< "just checking"<<endl;
        }
    };
int main(int argc, char **argv)
{
    MyClass *p ( new MyClass());; 
    MyClass  *q = p;
    delete p;
    q->test();
    p = NULL;
    q->test();
    return 0;
}
Any help would be appreciated.
 
     
    