#include <iostream>
using namespace std;
class mobject
{
public :
mobject( const mobject& ob) { cout << "mobject overridden-copy-constructor\n " ; }
mobject( ) { cout << "mobject ctor\n " ; }
~mobject( ) { cout << "mobject dtor\n " ; }
} ;
mobject giveme( )
{
cout << "1. In Function: " << __func__<< endl;
return mobject( ) ;
}
void func2( const mobject& p)
{
cout << "2. In Function: " << __func__<< endl;
mobject g = p;
cout << "3. In Function: " << __func__<< endl;
}
void func1( const mobject& p)
{
cout << "4. In Function: " << __func__<< endl;
func2( p) ;
cout << "5. In Function: " << __func__<< endl;
}
int main( )
{
cout << "6. In Function: " << __func__<< endl;
func1( giveme( ) ) ;
cout << "7. In Function: " << __func__<< endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgbW9iamVjdAp7CnB1YmxpYzoKICAgIG1vYmplY3QoY29uc3QgbW9iamVjdCYgb2IpeyBjb3V0IDw8ICJtb2JqZWN0IG92ZXJyaWRkZW4tY29weS1jb25zdHJ1Y3RvclxuIjsgfQogICAgbW9iamVjdCgpeyBjb3V0IDw8ICJtb2JqZWN0IGN0b3JcbiI7IH0KICAgIH5tb2JqZWN0KCl7IGNvdXQgPDwgIm1vYmplY3QgZHRvclxuIjsgfQp9OwoKbW9iamVjdCBnaXZlbWUoKSAKeyAKCWNvdXQgPDwgIjEuIEluIEZ1bmN0aW9uOiAiPDxfX2Z1bmNfXzw8ZW5kbDsKCXJldHVybiBtb2JqZWN0KCk7IAp9CnZvaWQgZnVuYzIoY29uc3QgbW9iamVjdCYgcCkgCnsgCgljb3V0IDw8ICIyLiBJbiBGdW5jdGlvbjogIjw8X19mdW5jX188PGVuZGw7Cgltb2JqZWN0IGcgPSBwOyAKCWNvdXQgPDwgIjMuIEluIEZ1bmN0aW9uOiAiPDxfX2Z1bmNfXzw8ZW5kbDsKfQp2b2lkIGZ1bmMxKGNvbnN0IG1vYmplY3QmIHApIAp7IAoJY291dCA8PCAiNC4gSW4gRnVuY3Rpb246ICI8PF9fZnVuY19fPDxlbmRsOwoJZnVuYzIocCk7IAoJY291dCA8PCAiNS4gSW4gRnVuY3Rpb246ICI8PF9fZnVuY19fPDxlbmRsOwp9CmludCBtYWluKCkKewogICAgY291dCA8PCAiNi4gSW4gRnVuY3Rpb246ICI8PF9fZnVuY19fPDxlbmRsOwogICAgZnVuYzEoZ2l2ZW1lKCkpOwogICAgY291dCA8PCAiNy4gSW4gRnVuY3Rpb246ICI8PF9fZnVuY19fPDxlbmRsOwogICAgcmV0dXJuIDA7Cn0=