Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class Super
- {
- public:
- Super() { std::cout << "Super constructed!\n"; };
- ~Super() { std::cout << "Super destructed!\n"; };
- };
- class BaseA : virtual public Super
- {
- protected:
- int fieldA;
- BaseA(int f = 42) : fieldA{ f } { std::cout << "BaseA constructed\n"; };
- public:
- ~BaseA() { std::cout << "BaseA destructed\n"; };
- };
- class BaseB : virtual public Super
- {
- protected:
- int fieldB;
- BaseB(int f = 33) : fieldB{ f } { std::cout << "BaseB constructed\n"; };
- public:
- ~BaseB() { std::cout << "BaseB destructed\n"; };
- };
- class ChildAB : public BaseA, public BaseB
- {
- int fieldC;
- public:
- ChildAB(int f = 16) : Super{}, fieldC { f } { std::cout << "ChildAB constructed\n"; }
- ~ChildAB() { std::cout << "ChildAB destructed\n"; };
- void print() { std::cout << fieldA << ' ' << fieldB << ' ' << fieldC << '\n'; };
- };
- int main()
- {
- ChildAB t;
- t.print();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement