#include <iostream>
class A {
private :
int * x;
public :
A( ) { x = new int ; * ( A:: x ) = 0 ; printme( "A()" ) ; }
A( const int * y) { x = new int ; * ( A:: x ) = * y; printme( "A(const int*)" ) ; }
~A( ) { printme( "~A()" ) ; delete x; }
void operator = ( const int * y) { printme( "before" ) ; A( y) ; printme( "after" ) ; }
void printme( const char * s) const
{ std:: cout << s << ": " << this << ": " << * x << '\n ' ; }
} ;
int main( ) {
A a;
int y = 3 ;
a = & y;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQSB7CnByaXZhdGU6CiAgICBpbnQgKng7CnB1YmxpYzoKICAgIEEoKSB7IHggPSBuZXcgaW50OyAqKEE6OngpID0gMDsgcHJpbnRtZSgiQSgpIik7IH0KICAgIEEoY29uc3QgaW50ICp5KSB7IHggPSBuZXcgaW50OyAqKEE6OngpID0gKnk7IHByaW50bWUoIkEoY29uc3QgaW50KikiKTsgfQogICAgfkEoKSB7IHByaW50bWUoIn5BKCkiKTsgZGVsZXRlIHg7IH0KICAgIHZvaWQgb3BlcmF0b3IgPSAoY29uc3QgaW50ICp5KSB7IHByaW50bWUoImJlZm9yZSIpOyBBKHkpOyBwcmludG1lKCJhZnRlciIpO30KICAgIAogICAgdm9pZCBwcmludG1lKGNvbnN0IGNoYXIqIHMpIGNvbnN0CiAgICB7IHN0ZDo6Y291dCA8PCBzIDw8ICI6ICIgPDwgdGhpcyA8PCAiOiAiIDw8ICp4IDw8ICdcbic7IH0KfTsKCmludCBtYWluKCkgewogICAgQSBhOwogICAgaW50IHkgPSAzOwogICAgYSA9ICZ5Owp9