Multiple inheritance example : multiple base classes « Class « C++ Tutorial





#include <iostream>
using std::ostream;
using std::cout;
using std::endl;

class Base1 {
public:
   Base1( int parameterValue )
   {
      value = parameterValue;
   }

   int getData() const
   {
      return value;
   }
protected:
   int value;
};

class Base2
{
public:
   Base2( char characterData )
   {
      letter = characterData;
   }

   char getData() const
   {
      return letter;
   }
protected:
   char letter;
};

class Derived : public Base1, public Base2
{
public:
   Derived( int integer, char character, double double1 )
      : Base1( integer ), Base2( character ), real( double1 ) { }

   double getReal() const {
      return real;
   }
    void display()
    {
       cout << "    Integer: " << value << "\n  Character: "
          << letter << "\nReal number: " << real;

    }

private:
   double real;
};


int main()
{
   Base1 base1( 10 ), *base1Ptr = 0;
   Base2 base2( 'Z' ), *base2Ptr = 0;
   Derived derived( 7, 'A', 3.5 );

   cout << base1.getData()
        << base2.getData();
   derived.display();

   cout << derived.Base1::getData()
        << derived.Base2::getData()
        << derived.getReal() << "\n\n";

   base1Ptr = &derived;
   cout << base1Ptr->getData() << '\n';

   base2Ptr = &derived;
   cout << base2Ptr->getData() << endl;
   return 0;
}
10Z    Integer: 7
  Character: A
Real number: 3.57A3.5

7
A










9.19.multiple base classes
9.19.1.An example of multiple base classes.
9.19.2.multiple inheritance with employees and degrees
9.19.3.multiple inheritance with English Distances
9.19.4.Multiple Inheritance to have the features from both parent
9.19.5.Resolving Ambiguity in Case of Multiple Inheritance Involving Common Base Classes
9.19.6.Multiple Inheritance in both private and public way
9.19.7.In cases of multiple inheritance: Constructors are called in order of derivation, destructors in reverse order
9.19.8.Multiple inheritance example