#include <iostream>
using namespace std;
class Object
{
public :
Object( ) { cout << "in constructor Object()" << endl; }
} ;
class scoped_ptr
{
Object * pObj;
public :
scoped_ptr( Object * pObject) : pObj( pObject)
{
cout << "in constructor scoped_ptr(Object*)" << endl;
}
scoped_ptr( const scoped_ptr& ptr)
{
cout << "in constructor scoped_ptr(const scoped_ptr&)" << endl;
pObj = ptr.pObj ;
}
scoped_ptr& operator= ( const scoped_ptr& ptr) = delete ;
//{
// cout << "in scoped_ptr::operator=(const scoped_ptr&)" << endl;
// pObj = ptr.pObj;
// return *this;
//}
} ;
int main( )
{
scoped_ptr p = new Object( ) ;
p = new Object( ) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgT2JqZWN0CnsKcHVibGljOgogICAgT2JqZWN0KCkgeyBjb3V0IDw8ICJpbiBjb25zdHJ1Y3RvciBPYmplY3QoKSIgPDwgZW5kbDsgfQp9OwoKY2xhc3Mgc2NvcGVkX3B0cgp7CiAgICBPYmplY3QgKnBPYmo7CgpwdWJsaWM6CiAgICBzY29wZWRfcHRyKE9iamVjdCAqcE9iamVjdCkgOiBwT2JqKHBPYmplY3QpCiAgICB7CiAgICAgICAgY291dCA8PCAiaW4gY29uc3RydWN0b3Igc2NvcGVkX3B0cihPYmplY3QqKSIgPDwgZW5kbDsKICAgIH0KCiAgICBzY29wZWRfcHRyKGNvbnN0IHNjb3BlZF9wdHImIHB0cikKICAgIHsKICAgICAgICBjb3V0IDw8ICJpbiBjb25zdHJ1Y3RvciBzY29wZWRfcHRyKGNvbnN0IHNjb3BlZF9wdHImKSIgPDwgZW5kbDsKICAgICAgICBwT2JqID0gcHRyLnBPYmo7CiAgICB9CgogICAgc2NvcGVkX3B0ciYgb3BlcmF0b3I9KGNvbnN0IHNjb3BlZF9wdHImIHB0cikgPSBkZWxldGU7CiAgICAvL3sKICAgIC8vICAgIGNvdXQgPDwgImluIHNjb3BlZF9wdHI6Om9wZXJhdG9yPShjb25zdCBzY29wZWRfcHRyJikiIDw8IGVuZGw7CiAgICAvLyAgICBwT2JqID0gcHRyLnBPYmo7CiAgICAvLyAgICByZXR1cm4gKnRoaXM7CiAgICAvL30KfTsKCmludCBtYWluKCkKewogICAgc2NvcGVkX3B0ciBwID0gbmV3IE9iamVjdCgpOwogICAgcCA9IG5ldyBPYmplY3QoKTsKICAgIHJldHVybiAwOwp9