#include <iostream>
#include <stdexcept>
using namespace std;
int i;
class A{
public:
~A(){i=10;}
};
int& func1()
{
i=3;
A Ob; // -> here local object , hence created and destroyed
return i;
}
int& func2()
{
i=8;
A obj;
return i;
}
int func3()
{
i=8;
{A obj;}
return i;
}
int main()
{
cout << "i : " <<func1() << endl;
cout << "i : " <<func2() << endl;
cout << "i : " <<func3() << endl;
return(0);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkZXhjZXB0PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBpOwoKY2xhc3MgQXsKICAgIHB1YmxpYzoKICAgIH5BKCl7aT0xMDt9CiAgICB9OwoKaW50JiBmdW5jMSgpCnsKICAgIGk9MzsKICAgIEEgT2I7IC8vIC0+IGhlcmUgbG9jYWwgb2JqZWN0ICwgaGVuY2UgY3JlYXRlZCBhbmQgZGVzdHJveWVkCiAgICByZXR1cm4gaTsKICAgIH0KCmludCYgZnVuYzIoKQp7CiAgICBpPTg7CiAgICBBIG9iajsKICAgIHJldHVybiBpOwogICAgfQoKaW50IGZ1bmMzKCkKewogICAgaT04OwogICAge0EgIG9iajt9CiAgICByZXR1cm4gaTsKICAgIH0KCgoKCgppbnQgbWFpbigpCnsKCmNvdXQgPDwgImkgOiAiIDw8ZnVuYzEoKSA8PCBlbmRsOwpjb3V0IDw8ICJpIDogIiA8PGZ1bmMyKCkgPDwgZW5kbDsKY291dCA8PCAiaSA6ICIgPDxmdW5jMygpIDw8IGVuZGw7CnJldHVybigwKTsKfQ==