#include
// program to illustrate the execution of constructors and destructors
class A
{
public:
A()
{
cout<< "constructor to A is invoked\n";
}
~A()
{
cout<<"destructor to A is invoked\n";
}
};
class B
{
public:
B()
{
cout<< "constructor B invoked\n";
}
~B()
{
cout<<"destructor B invoked\n";
}
};
class C: virtual public A
{
public:
C()
{
cout<<"constructor to C invoked\n";
}
~C()
{
cout << "destructor to C invoked\n";
}
};
class D:virtual public A
{
public:
D()
{
cout<<"constructor to D invoked\n";
}
~D()
{
cout << "Destructor D invoked\n";
}
};
class E
{
public:
E()
{
cout<<"constructor to E invoked\n";
}
~E()
{
cout<<"Destructor to E invoked\n";
}
};
class F:public C,public B,public D,public E
{
public:
F()
{
cout<<"constructor to F invoked\n";
}
~F()
{
cout<<"destructor to F invoked\n";
}
};
void main()
{
F Fvar;
cout<<"program over\n";
}
// program to illustrate the execution of constructors and destructors
class A
{
public:
A()
{
cout<< "constructor to A is invoked\n";
}
~A()
{
cout<<"destructor to A is invoked\n";
}
};
class B
{
public:
B()
{
cout<< "constructor B invoked\n";
}
~B()
{
cout<<"destructor B invoked\n";
}
};
class C: virtual public A
{
public:
C()
{
cout<<"constructor to C invoked\n";
}
~C()
{
cout << "destructor to C invoked\n";
}
};
class D:virtual public A
{
public:
D()
{
cout<<"constructor to D invoked\n";
}
~D()
{
cout << "Destructor D invoked\n";
}
};
class E
{
public:
E()
{
cout<<"constructor to E invoked\n";
}
~E()
{
cout<<"Destructor to E invoked\n";
}
};
class F:public C,public B,public D,public E
{
public:
F()
{
cout<<"constructor to F invoked\n";
}
~F()
{
cout<<"destructor to F invoked\n";
}
};
void main()
{
F Fvar;
cout<<"program over\n";
}