#include<bits/stdc++.h>
using namespace std;
class Manar{
private:
static Manar* manora;
Manar(){
cout <<"manar's constructor\n";
}
public:
Manar(const Manar&)=delete;// Delete copy constructor
Manar &operator =(const Manar&)=delete;// Delete assignment operator
static Manar* getInstance(){
if(manora == nullptr){
manora = new Manar();
}
return manora;
}
void mess(){
cout <<"done \n";
}
~Manar(){
cout <<"destructor\n";
}
};
Manar* Manar::manora =nullptr;
int main(){
Manar* manora = Manar::getInstance();
manora->mess();
Manar* manora2 =Manar::getInstance();
manora2->mess();
delete manora;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIE1hbmFyewogICAgcHJpdmF0ZToKICAgIHN0YXRpYyBNYW5hciogbWFub3JhOwogICAgTWFuYXIoKXsKICAgICAgICBjb3V0IDw8Im1hbmFyJ3MgY29uc3RydWN0b3JcbiI7CiAgICB9CiAgICBwdWJsaWM6CiAgICBNYW5hcihjb25zdCBNYW5hciYpPWRlbGV0ZTsvLyBEZWxldGUgY29weSBjb25zdHJ1Y3RvcgogICAgTWFuYXIgJm9wZXJhdG9yID0oY29uc3QgTWFuYXImKT1kZWxldGU7Ly8gRGVsZXRlIGFzc2lnbm1lbnQgb3BlcmF0b3IKCiAgICBzdGF0aWMgTWFuYXIqIGdldEluc3RhbmNlKCl7CiAgICAgICAgaWYobWFub3JhID09IG51bGxwdHIpewogICAgICAgICAgICBtYW5vcmEgPSBuZXcgTWFuYXIoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG1hbm9yYTsKICAgICAgICAKICAgIH0KICAgIHZvaWQgbWVzcygpewogICAgICAgIGNvdXQgPDwiZG9uZSBcbiI7CiAgICB9CiAgICB+TWFuYXIoKXsKICAgICAgICBjb3V0IDw8ImRlc3RydWN0b3JcbiI7CiAgICB9Cn07Ck1hbmFyKiBNYW5hcjo6bWFub3JhID1udWxscHRyOwppbnQgbWFpbigpewogICAgTWFuYXIqIG1hbm9yYSA9IE1hbmFyOjpnZXRJbnN0YW5jZSgpOwogICAgbWFub3JhLT5tZXNzKCk7CiAgICBNYW5hciogbWFub3JhMiA9TWFuYXI6OmdldEluc3RhbmNlKCk7CiAgICBtYW5vcmEyLT5tZXNzKCk7CiAgICBkZWxldGUgbWFub3JhOwogICAgcmV0dXJuIDA7Cn0=