109 lines
2.8 KiB
C++
109 lines
2.8 KiB
C++
#include <iostream>
|
|
using namespace std;
|
|
|
|
class A1 {
|
|
protected:
|
|
int a1;
|
|
|
|
public:
|
|
A1(int V1 = 0) : a1(V1) { cout << "\nClass A1 constructor"; }
|
|
virtual void print() { cout << "\nVariable of A1 class"; }
|
|
virtual void show() { cout << "\na1 = " << a1; }
|
|
};
|
|
|
|
class A2 {
|
|
protected:
|
|
int a2;
|
|
|
|
public:
|
|
A2(int V1 = 0) : a2(V1) { cout << "\nClass A2 constructor"; }
|
|
virtual void print() { cout << "\nVariable of A2 class"; }
|
|
virtual void show() { cout << "\na2 = " << a2; }
|
|
};
|
|
|
|
class A3 {
|
|
protected:
|
|
int a3;
|
|
|
|
public:
|
|
A3(int V1 = 0) : a3(V1) { cout << "\nClass A3 constructor"; }
|
|
virtual void print() { cout << "\nVariable of A3 class"; }
|
|
virtual void show() { cout << "\na3 = " << a3; }
|
|
};
|
|
|
|
class B1 : virtual public A1, virtual public A3 {
|
|
protected:
|
|
int b1;
|
|
|
|
public:
|
|
B1(int V1 = 0, int V3 = 0) : A1(V1), A3(V3), b1(V1) { a1 = V1; a3 = V3; cout << "\nClass B1 constructor"; }
|
|
virtual void print() { cout << "\nVariable of B1 class"; }
|
|
virtual void show() { cout << "\nb1 = " << b1 << ", a1 = " << a1 << ", a3 = " << a3; }
|
|
};
|
|
|
|
class B2 : virtual public A2, virtual public A3 {
|
|
protected:
|
|
int b2;
|
|
|
|
public:
|
|
B2(int V2 = 0, int V3 = 0) : A2(V2), A3(V3), b2(V2) { a2 = V2; a3 = V3; cout << "\nClass B2 constructor"; }
|
|
virtual void print() { cout << "\nVariable of B2 class"; }
|
|
virtual void show() { cout << "\nb2 = " << b2 << ", a2 = " << a2 << ", a3 = " << a3; }
|
|
};
|
|
|
|
class C1 : virtual public B1, virtual public B2 {
|
|
protected:
|
|
int c1;
|
|
|
|
public:
|
|
C1(int V1 = 0, int V2 = 0, int V3 = 0) : B1(V1, V3), B2(V2, V3), c1(V1) { cout << "\nClass C1 constructor"; }
|
|
virtual void print() { cout << "\nVariable of C1 class"; }
|
|
virtual void show() { cout << "\nc1 = " << c1 << ", b1 = " << b1 << ", b2 = " << b2; }
|
|
};
|
|
|
|
class C2 : virtual public B1, virtual public B2 {
|
|
protected:
|
|
int c2;
|
|
|
|
public:
|
|
C2(int V1 = 0, int V2 = 0, int V3 = 0) : B1(V1, V3), B2(V2, V3), c2(V1) { cout << "\nClass C2 constructor"; }
|
|
virtual void print() { cout << "\nVariable of C2 class"; }
|
|
virtual void show() { cout << "\nc2 = " << c2 << ", b1 = " << b1 << ", b2 = " << b2; }
|
|
};
|
|
|
|
class C3 : virtual public B1, virtual public B2 {
|
|
protected:
|
|
int c3;
|
|
|
|
public:
|
|
C3(int V1 = 0, int V2 = 0, int V3 = 0) : B1(V1, V3), B2(V2, V3), c3(V1) { cout << "\nClass C3 constructor"; }
|
|
virtual void print() { cout << "\nVariable of C3 class"; }
|
|
virtual void show() { cout << "\nc3 = " << c3 << ", b1 = " << b1 << ", b2 = " << b2; }
|
|
};
|
|
|
|
int main() {
|
|
|
|
B1 b1(1, 2);
|
|
B2 b2(3, 4);
|
|
C1 c1(7, 8, 9);
|
|
C2 c2(11, 12, 13);
|
|
C3 c3(14, 15, 16);
|
|
|
|
|
|
A1* ptr1 = &b1;
|
|
A2* ptr2 = &b2;
|
|
A1* ptr3 = &c1;
|
|
A1* ptr4 = &c2;
|
|
A1* ptr5 = &c3;
|
|
|
|
|
|
|
|
ptr1->show();
|
|
ptr2->show();
|
|
ptr3->show();
|
|
ptr4->show();
|
|
ptr5->show();
|
|
|
|
return 0;
|
|
}
|