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"??*/