#include<iostream>
using namespace std;
class Point {
public:
// Constructor
// called whenever we create an object or instantiate an object
// allocating memory
Point() { cout << "Constructor called"<<endl; }
// Destructor
// called whenever we delete an object or an object gets automatically deleted (garbage collection)
// free the allocated memory
~Point() {
cout<<"Destructor called"<<endl;
}
};
int main()
{
// t1 is actually an object created and instantiated
// t2 is a pointer to the object of the class and it aint yet instantiated
Point t1, *t2;
// allocated memory to our object pointer
t2 = new Point();
delete t2;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIFBvaW50IHsKcHVibGljOgoKCS8vIENvbnN0cnVjdG9yCgkvLyBjYWxsZWQgd2hlbmV2ZXIgd2UgY3JlYXRlIGFuIG9iamVjdCBvciBpbnN0YW50aWF0ZSBhbiBvYmplY3QKCS8vIGFsbG9jYXRpbmcgbWVtb3J5CiAgICBQb2ludCgpIHsgY291dCA8PCAiQ29uc3RydWN0b3IgY2FsbGVkIjw8ZW5kbDsgfQogICAgCiAgICAvLyBEZXN0cnVjdG9yCiAgICAvLyBjYWxsZWQgd2hlbmV2ZXIgd2UgZGVsZXRlIGFuIG9iamVjdCBvciBhbiBvYmplY3QgZ2V0cyBhdXRvbWF0aWNhbGx5IGRlbGV0ZWQgKGdhcmJhZ2UgY29sbGVjdGlvbikKCS8vIGZyZWUgdGhlIGFsbG9jYXRlZCBtZW1vcnkKCX5Qb2ludCgpIHsKCQljb3V0PDwiRGVzdHJ1Y3RvciBjYWxsZWQiPDxlbmRsOwoJfQoJCn07CgppbnQgbWFpbigpCnsKICAgLy8gdDEgaXMgYWN0dWFsbHkgYW4gb2JqZWN0IGNyZWF0ZWQgYW5kIGluc3RhbnRpYXRlZAogICAvLyB0MiBpcyBhIHBvaW50ZXIgdG8gdGhlIG9iamVjdCBvZiB0aGUgY2xhc3MgYW5kIGl0IGFpbnQgeWV0IGluc3RhbnRpYXRlZAogICBQb2ludCB0MSwgKnQyOwogICAvLyBhbGxvY2F0ZWQgbWVtb3J5IHRvIG91ciBvYmplY3QgcG9pbnRlcgogICB0MiA9IG5ldyBQb2ludCgpOwogICBkZWxldGUgdDI7CiAgIHJldHVybiAwOwp9