2. What will be the output of each of the following program when it is executed. (a)
#include using namespace std; struct A {
A()
{
cout <>
}
};
struct B : A
{
B()
{
}
};
cout <>
struct C : B
{
C()
{
}
};
cout <>
struct D : C
{
D()
{
}
};
cout <>
int main()
{
}
(b)
D obj; return 0;
#include using namespace std; struct A {
~A()
{
cout <>
}
};
struct B : A
{
~B()
{
cout <>
}
};
struct C : B
{
~C()
{
cout <>
}
};
struct D : C
{
~D()
{
cout <>
}
};
int main()
{
}
(c)
D obj; return 0;
#include using namespace std; struct A {
A();
~A();
};
struct B : A
{
B();
~B();
};
struct C : B
{
C();
~C();
};
struct D : C
{
D();
~D();
};
A :: A()
{
cout <>
}
A :: ~A()
{
cout <>
}
B :: B()
{
cout <>
}
B :: ~B()
{
cout <>
}
C :: C()
{
cout <>
}
C :: ~C()
{
cout <>
}
D :: D()
{
cout <>
}
D :: ~D()
{
cout <>
}
int main()
{
}
(d)
D obj; return 0;
#include using namespace std; class A {
public:
void display()
{
cout <>
}
};
class B : public A
{
public:
void display()
{
A::display();
cout <>
}
};
class C : public A
{
public:
void display()
{
A::display();
cout <>
}
};
class D : public B, public C
{
public:
void display()
{
B::display();
C::display();
cout <>
}
};
int main()
{
}
(e)
D *obj;
obj->display(); return 0;
#include using namespace std; class A {
public:
virtual void display()
{
cout <>
}
};
class B : public virtual A
{
public:
void display()
{
A::display();
cout <>
}
};
class C : public virtual A
{
public:
void display()
{
A::display();
cout <>
}
};
class D : public B, public C
{
public:
void display()
{
B::display();
C::display();
cout <>
}
};
int main()
{
}
(f)
D obj; obj.display(); return 0;
#include using namespace std; struct A {
virtual A(); virtual ~A();
};
struct B : A
{
virtual B(); virtual ~B();
};
A :: A()
{
cout <>
}
A :: ~A()
{
cout <>
}
B :: B()
{
cout <>
}
B :: ~B()
{
cout <>
}
int main()
{
}
(g)
B obj; return 0;
#include using namespace std; struct A {
inline A();
inline virtual ~A();
};
struct B : A
{
inline B();
inline virtual ~B();
};
A :: A()
{
cout <>
}
A :: ~A()
{
cout <>
}
B :: B()
{
cout <>
}
B :: ~B()
{
cout <>
}
int main()
{
}
(h)
B obj; return 0;
#include using namespace std; struct A {
inline A();
inline virtual ~A();
};
struct B : virtual A
{
inline B();
inline virtual ~B();
};
A :: A()
{
cout <>
}
A :: ~A()
{
cout <>
}
B :: B()
{
cout <>
}
B :: ~B()
{
cout <>
}
int main()
{
B obj; return 0;
}