#include <iostream>
using std::cout;
using std::endl;
class Base1 {
protected:
int a;
public:
Base1(int _a) {
a = _a;
cout << "class Base1: " << a << endl;
}
~Base1() {
cout << "~Base1()" << endl;
}
};
class Base2 {
protected:
int b;
public:
Base2(int _b) {
b = _b;
cout << "class Base2: " << b << endl;
}
~Base2() {
cout << "~Base2()" << endl;
}
};
class Derived : public Base1, public Base2 {
public:
Derived(int _a, int _b) : Base1(_a), Base2(_b) {
cout << "Constructor Derived" << endl;
}
~Derived() {
cout << "Destructor Derived" << endl;
}
void print() {
cout << "Derived: " << a << " " << b << endl;
}
};
int main()
{
Derived o(17, 13);
o.print();
return 0;
}
/*
run:
class Base1: 17
class Base2: 13
Constructor Derived
Derived: 17 13
Destructor Derived
~Base2()
~Base1()
*/