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 < “a”=””><>
;
struct B : A
B()
;
cout < “b”=””><>
struct C : B
C()
;
cout < “c”=””><>
struct D : C
D()
;
cout < “d”=””><>
int main()
(b)
D obj; return 0;
#include using namespace std; struct A
~A()
cout < “~a”=””><>
;
struct B : A
~B()
cout < “~b”=””><>
;
struct C : B
~C()
cout < “~c”=””><>
;
struct D : C
~D()
cout < “~d”=””><>
;
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
C :: C()
cout < “c”=””><>
C :: ~C()
cout < “~c”=””><>
D :: D()
cout < “d”=””><>
D :: ~D()
cout < “~d”=””><>
int main()
(d)
D obj; return 0;
#include using namespace std; class A
public:
void display()
cout < “a”=””><>
;
class B : public A
public:
void display()
A::display();
cout < “b”=””><>
;
class C : public A
public:
void display()
A::display();
cout < “c”=””><>
;
class D : public B, public C
public:
void display()
B::display();
C::display();
cout < “d”=””><>
;
int main()
(e)
D *obj;
obj->display(); return 0;
#include using namespace std; class A
public:
virtual void display()
cout < “a”=””><>
;
class B : public virtual A
public:
void display()
A::display();
cout < “b”=””><>
;
class C : public virtual A
public:
void display()
A::display();
cout < “c”=””><>
;
class D : public B, public C
public:
void display()
B::display();
C::display();
cout < “d”=””><>
;
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
int main()
B obj; return 0;
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 < “a”=””><>
;
struct B : A
B()
;
cout < “b”=””><>
struct C : B
C()
;
cout < “c”=””><>
struct D : C
D()
;
cout < “d”=””><>
int main()
(b)
D obj; return 0;
#include using namespace std; struct A
~A()
cout < “~a”=””><>
;
struct B : A
~B()
cout < “~b”=””><>
;
struct C : B
~C()
cout < “~c”=””><>
;
struct D : C
~D()
cout < “~d”=””><>
;
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
C :: C()
cout < “c”=””><>
C :: ~C()
cout < “~c”=””><>
D :: D()
cout < “d”=””><>
D :: ~D()
cout < “~d”=””><>
int main()
(d)
D obj; return 0;
#include using namespace std; class A
public:
void display()
cout < “a”=””><>
;
class B : public A
public:
void display()
A::display();
cout < “b”=””><>
;
class C : public A
public:
void display()
A::display();
cout < “c”=””><>
;
class D : public B, public C
public:
void display()
B::display();
C::display();
cout < “d”=””><>
;
int main()
(e)
D *obj;
obj->display(); return 0;
#include using namespace std; class A
public:
virtual void display()
cout < “a”=””><>
;
class B : public virtual A
public:
void display()
A::display();
cout < “b”=””><>
;
class C : public virtual A
public:
void display()
A::display();
cout < “c”=””><>
;
class D : public B, public C
public:
void display()
B::display();
C::display();
cout < “d”=””><>
;
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
int main()
B obj; return 0;
#include using namespace std; struct A
A()
cout < “a”=””><>
;
struct B : A
B()
;
cout < “b”=””><>
struct C : B
C()
;
cout < “c”=””><>
struct D : C
D()
;
cout < “d”=””><>
int main()
(b)
D obj; return 0;
#include using namespace std; struct A
~A()
cout < “~a”=””><>
;
struct B : A
~B()
cout < “~b”=””><>
;
struct C : B
~C()
cout < “~c”=””><>
;
struct D : C
~D()
cout < “~d”=””><>
;
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
C :: C()
cout < “c”=””><>
C :: ~C()
cout < “~c”=””><>
D :: D()
cout < “d”=””><>
D :: ~D()
cout < “~d”=””><>
int main()
(d)
D obj; return 0;
#include using namespace std; class A
public:
void display()
cout < “a”=””><>
;
class B : public A
public:
void display()
A::display();
cout < “b”=””><>
;
class C : public A
public:
void display()
A::display();
cout < “c”=””><>
;
class D : public B, public C
public:
void display()
B::display();
C::display();
cout < “d”=””><>
;
int main()
(e)
D *obj;
obj->display(); return 0;
#include using namespace std; class A
public:
virtual void display()
cout < “a”=””><>
;
class B : public virtual A
public:
void display()
A::display();
cout < “b”=””><>
;
class C : public virtual A
public:
void display()
A::display();
cout < “c”=””><>
;
class D : public B, public C
public:
void display()
B::display();
C::display();
cout < “d”=””><>
;
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
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 :: ~A()
cout < “~a”=””><>
B :: B()
cout < “b”=””><>
B :: ~B()
cout < “~b”=””><>
int main()
B obj; return 0;