Not to use in any implementation but just for the sake of understanding I am trying to explicitly call a destructor using an object and another `*` to object.

**CODE**  

```
#include<iostream>
using namespace std; 

class A{
public :
A(){
    cout<<"\nConstructor called ";
}

~A()
{
    cout<<"\nDestructor called ";
}
};

int main()
{
    A obj,*obj1;
    obj1->~A();
    obj.~A();
    return 0;
}

```

**OUTPUT**

![output1](https://i.stack.imgur.com/xdRLa.png)

Now the problem is that I can't understand why destructor is called three times.  

Even if the `obj1` is not yet pointing to any object.  

Note that I understand that the last two destructor calls are:

1. because I am calling `obj.~A()`;
2. because we go out of the scope of object `obj`.

I am using `DevC++ 5.5.1`