60 lines
902 B
C++
60 lines
902 B
C++
#include <iostream>
|
|
|
|
class A {
|
|
protected:
|
|
int a;
|
|
|
|
public:
|
|
A(int _a) : a(_a) {
|
|
}
|
|
void display() {
|
|
std::cout << a << std::endl;
|
|
}
|
|
};
|
|
|
|
class B : virtual public A {
|
|
protected:
|
|
int b;
|
|
|
|
public:
|
|
B(int _a, int _b) : A(_a+1), b(_b) {
|
|
}
|
|
void display() {
|
|
A::display();
|
|
std::cout << b << std::endl;
|
|
}
|
|
};
|
|
|
|
class C : virtual public A {
|
|
protected:
|
|
int c;
|
|
|
|
public:
|
|
C(int _a, int _c) : A(_a + 2), c(_c) {
|
|
}
|
|
void display() {
|
|
A::display();
|
|
std::cout << c << std::endl;
|
|
}
|
|
};
|
|
|
|
class D : public B, public C {
|
|
protected:
|
|
int d;
|
|
|
|
public:
|
|
D(int _a, int _b, int _c, int _d) :A(_a), B(_a, _b), C(_a, _c), d(_d){};
|
|
|
|
void display() {
|
|
A::display();
|
|
B::display();
|
|
C::display();
|
|
std::cout << d << std::endl;
|
|
}
|
|
};
|
|
|
|
int main() {
|
|
D objD(1, 2, 3, 4);
|
|
objD.display();
|
|
return 0;
|
|
} |