// @topic W110301 C++ <a href="http://www.c-jump.com/bcc/c123c/c123sample/Java/Week11/hero_digram_class_violet.html" target="_blank">multiple inheritance</a> demo
// @brief C++ program demonstarting multiple inheritance

#include <cstdlib>
#include <iostream>

class Vehicle {
    int seats;
public:
    Vehicle( int seats ) : seats(seats) {}
    void print() { std::cout << seats; }
};//class Vehicle


class SportsCar : public Vehicle {
    int horsepower;
public:
    SportsCar( int horsepower ) : horsepower(horsepower), Vehicle(2) {}
};//class SportsCar


class Helicopter : public Vehicle {
    int atitude;
public:
    Helicopter( int atitude ) : atitude(atitude), Vehicle(8) {}
};//class Helicopter


class HeliCar : public virtual Helicopter, public virtual SportsCar {
    int ID;
public:
    HeliCar ( int ID ) : ID(ID), Helicopter(7000), SportsCar(500) {}
    void print() { Helicopter::print(); SportsCar::print(); }
};//class HeliCar


int main()
{
    Vehicle vh( 1 );
    vh.print();

    SportsCar sp(450);
    sp.print();

    Helicopter hl( 6000 );
    hl.print();

    HeliCar hc( 007 );
    hc.print();

    std::cout << '\n';
    system("pause");
}