#include "iostream"
using namespace std;
class A {
int i;
public :
A( int ii) : i( ii) {
cout << "\n Constructor of A is called \n " ;
}
~A( ) {
cout << "\n destructor of A is called \n " ;
}
void f( ) const { }
} ;
class B {
int i;
public :
B( int ii) : i( ii) {
cout << "\n Constructor of B is called \n " ;
}
~B( ) {
cout << "\n destructor of B is called \n " ;
}
void f( ) const { }
} ;
class C : public B {
A a;
public :
C( int ii) : a( ii) , B( ii) {
cout << "\n Constructor of C is called \n " ;
}
~C( ) {
cout << "\n destructor of C is called \n " ;
} // Calls ~A() and ~B()
void f( ) const { // Redefinition
a.f ( ) ;
B:: f ( ) ;
}
} ;
int main( ) {
C c( 47 ) ;
} ///:~
I2luY2x1ZGUgImlvc3RyZWFtIgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQSB7CiAgaW50IGk7CnB1YmxpYzoKICBBKGludCBpaSkgOiBpKGlpKSB7CiAgICAgIGNvdXQgPDwgIlxuIENvbnN0cnVjdG9yIG9mIEEgaXMgY2FsbGVkIFxuIjsKICAgICAgCiAgfQogIH5BKCkgewogICAgICBjb3V0IDw8ICJcbiBkZXN0cnVjdG9yICBvZiBBIGlzIGNhbGxlZCBcbiI7CiAgfQogIHZvaWQgZigpIGNvbnN0IHt9Cn07CgpjbGFzcyBCIHsKICBpbnQgaTsKcHVibGljOgogIEIoaW50IGlpKSA6IGkoaWkpIHsKICAgICAgY291dCA8PCAiXG4gQ29uc3RydWN0b3Igb2YgQiBpcyBjYWxsZWQgXG4iOwogIH0KICB+QigpIHsKICAgICAgY291dCA8PCAiXG4gZGVzdHJ1Y3RvciAgb2YgQiBpcyBjYWxsZWQgXG4iOwogIH0KICB2b2lkIGYoKSBjb25zdCB7fQp9OwoKY2xhc3MgQyA6IHB1YmxpYyBCIHsKICBBIGE7CnB1YmxpYzoKICBDKGludCBpaSkgOiBhKGlpKSwgQihpaSkgewogICAgICBjb3V0IDw8ICJcbiBDb25zdHJ1Y3RvciBvZiBDIGlzIGNhbGxlZCBcbiI7CiAgfQogIH5DKCkgewogIGNvdXQgPDwgIlxuIGRlc3RydWN0b3IgIG9mIEMgaXMgY2FsbGVkIFxuIjsKICB9IC8vIENhbGxzIH5BKCkgYW5kIH5CKCkKICB2b2lkIGYoKSBjb25zdCB7ICAvLyBSZWRlZmluaXRpb24KICAgIGEuZigpOwogICAgQjo6ZigpOwogIH0KfTsKCmludCBtYWluKCkgewogIEMgYyg0Nyk7Cn0gLy8vOn4=