class A{
       public:
           A(){ cout << “A ctor” << endl; }//default A constructor
           A(const A& a){ cout <<“A copy ctor”<< endl; }//copy constructor
           virtual ~A(){ cout <<“A dtor”<< endl; }//destructor
           virtual void foo(){ cout <<”A foo()” << endl; }
           virtual A& operator=(const A& rhs){ cout << “A op=” << endl; }//operator
    };
class B:public A{
   public:
       B(){ cout <<“B ctor”<< endl; }//default B constructor 
       virtual ~B(){ cout <<”B dtor”<< endl; }//destructor
       virtual void foo(){ cout <<”B foo()”<< endl; }
   protected:
       A mInstanceOfA;
}; 
A foo(A& input){
    input.foo();
    return input;
}
Int main(){
    B myB;
    B myOtherB;
    A myA;
    myOtherB=myB;
    myA=foo(myOtherB);
}
This program prints:
A ctor
A ctor
B ctor
A ctor
A ctor
B ctor
A ctor
A op=
A op=
B foo()
A copy ctor
A op=
A dctor
why print 2 times "A ctor" before print "B ctor" and why print at the end of the program "A copy ctor", "A op=", "A dctor"??*/
 
     
    