/**
 * Copy constructor
 * Example 5
 */

#include <iostream>
using namespace std;


class Inner
{
    public:
        Inner()
        {
            cout << "In Inner class ctor" << endl;
        }

        Inner( const Inner & o )
        {
            cout << "In Inner class copy ctor" << endl;
        }

        ~Inner()
        {
            cout << "In Inner class dtor" << endl;
        }

        virtual char * Id (void )
        {
            return "Inner";
        }
};

int foo ( Inner x )
{
    cout << "In function foo" << endl;
}

int main( int argc, char *argv[])
{
    Inner bar;
    cout << "Calling function foo" << endl;
    foo( bar );
}