#include<iostream>
#include<string>
using std:: cout ; using std:: endl ;
using std:: string ;
class NoName
{
public :
NoName( string sName = "Alice In Wonderland" ) :
pstring( new string( sName) )
{
cout << "ctor - " << * pstring << endl;
}
NoName( const NoName& rhs) :
pstring( new string( * rhs.pstring ) )
{
cout << "Copy ctor - " << * pstring << endl;
}
NoName& operator= ( const NoName& rhs)
{
* pstring = * rhs.pstring ;
cout << "Copy assignment operator - " << * pstring << endl;
return * this ;
}
~NoName( )
{
cout << "dtor, my name was " << * pstring << endl;
delete pstring;
}
private :
string * pstring;
} ;
class Better
{
public :
Better( string sName = "Alice In Wonderland" ) :
m_string( sName)
{
}
private :
string m_string;
} ;
int main( )
{
NoName m, n( "Another name" ) ;
NoName o( m) ;
o = n;
return 0 ;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZz4KCnVzaW5nIHN0ZDo6Y291dDsgdXNpbmcgc3RkOjplbmRsOwp1c2luZyBzdGQ6OnN0cmluZzsKCmNsYXNzIE5vTmFtZQp7CnB1YmxpYzoKICAgIE5vTmFtZShzdHJpbmcgc05hbWUgPSAiQWxpY2UgSW4gV29uZGVybGFuZCIpIDoKICAgICAgICBwc3RyaW5nKG5ldyBzdHJpbmcoc05hbWUpKQogICAgewogICAgICBjb3V0IDw8ICJjdG9yIC0gIiA8PCAqcHN0cmluZyA8PCBlbmRsOwogICAgfQogICAgTm9OYW1lKGNvbnN0IE5vTmFtZSYgcmhzKSA6CiAgICAgICAgcHN0cmluZyhuZXcgc3RyaW5nKCpyaHMucHN0cmluZykpCiAgICB7CiAgICAgIGNvdXQgPDwgIkNvcHkgY3RvciAtICIgPDwgKnBzdHJpbmcgPDwgZW5kbDsKICAgIH0KICAgIE5vTmFtZSYgb3BlcmF0b3I9KGNvbnN0IE5vTmFtZSYgcmhzKQogICAgewogICAgICAqcHN0cmluZyA9ICpyaHMucHN0cmluZzsKICAgICAgY291dCA8PCAiQ29weSBhc3NpZ25tZW50IG9wZXJhdG9yIC0gIiA8PCAqcHN0cmluZyA8PCBlbmRsOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgfk5vTmFtZSgpCiAgICB7CiAgICAgICAgY291dCA8PCAiZHRvciwgbXkgbmFtZSB3YXMgIiA8PCAqcHN0cmluZyA8PCBlbmRsOwogICAgICAgIGRlbGV0ZSBwc3RyaW5nOwogICAgfQpwcml2YXRlOgogICAgc3RyaW5nICpwc3RyaW5nOwp9OwoKY2xhc3MgQmV0dGVyCnsKcHVibGljOgogICAgQmV0dGVyKHN0cmluZyBzTmFtZSA9ICJBbGljZSBJbiBXb25kZXJsYW5kIikgOgogICAgICAgIG1fc3RyaW5nKHNOYW1lKQogICAgewogICAgfQpwcml2YXRlOgogICAgc3RyaW5nIG1fc3RyaW5nOwp9OwoKaW50IG1haW4oKQp7CiAgICBOb05hbWUgbSwgbigiQW5vdGhlciBuYW1lIik7CiAgICBOb05hbWUgbyhtKTsKICAgIG8gPSBuOwogICAgCiAgICByZXR1cm4gMDsKfQ==