Question: We can call destructor explicitly through class pointer, why not constructor? Any idea?

```
#include <iostream>

class Con {
public:
    Con( int x ) : x( x ) {

    }

private:
    int x;
};

int main() {
    Con* c = new Con( 1 );
    //c->Con( 2 ); //illegal
    c->~Con(); // ok!
    delete c;
}

```

Thanks,

Answer: 
No. You cannot.

```
Con* c = new Con( 1 );
//c->Con( 2 ); //illegal

```

You've already called the constructor in the `new` expression. 

By the time you've a valid pointer of type `Con*`, you've already created an object. And calling *constructor* on the "constructed" object doesn't even make sense. So why would C++ allow that?
A Constructor's intent is to be called when the object is created. Nothing else. If you had a reference counter to keep track of the number of objects, allowing the constructor to be called as a function would mess the counter up.

If you want to reinitialize or reset an object, you can add a function called Reset() or Initialize() and call it from the constructor. Then, you can also call Reset() or Initialize() from an object pointer.