A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B_Tutorial%2FClass%2Fmultiple_base_classes</id>
		<title>C++ Tutorial/Class/multiple base classes - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B_Tutorial%2FClass%2Fmultiple_base_classes"/>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Class/multiple_base_classes&amp;action=history"/>
		<updated>2026-04-17T19:33:43Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Class/multiple_base_classes&amp;diff=2271&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Class/multiple_base_classes&amp;diff=2271&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:17Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Class/multiple_base_classes&amp;diff=2272&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Class/multiple_base_classes&amp;diff=2272&amp;oldid=prev"/>
				<updated>2010-05-25T10:29:18Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==An example of multiple base classes.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt; &lt;br /&gt;
using namespace std; &lt;br /&gt;
 &lt;br /&gt;
class BaseClass1 { &lt;br /&gt;
protected: &lt;br /&gt;
  int x; &lt;br /&gt;
public: &lt;br /&gt;
  void showx() { cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; } &lt;br /&gt;
}; &lt;br /&gt;
 &lt;br /&gt;
class BaseClass2 { &lt;br /&gt;
protected: &lt;br /&gt;
  int y; &lt;br /&gt;
public: &lt;br /&gt;
  void showy() { cout &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; } &lt;br /&gt;
}; &lt;br /&gt;
 &lt;br /&gt;
// Inherit multiple base classes. &lt;br /&gt;
class DerivedClass: public BaseClass1, public BaseClass2 { &lt;br /&gt;
public: &lt;br /&gt;
  /* x and y are accessible because they are &lt;br /&gt;
     protected in BaseClass1 and BaseClass2, not private. */ &lt;br /&gt;
  void set(int i, int j) { x = i; y = j; } &lt;br /&gt;
}; &lt;br /&gt;
 &lt;br /&gt;
int main() &lt;br /&gt;
{ &lt;br /&gt;
  DerivedClass ob; &lt;br /&gt;
 &lt;br /&gt;
  ob.set(10, 20); // provided by DerivedClass &lt;br /&gt;
  ob.showx();     // from BaseClass1 &lt;br /&gt;
  ob.showy();     // from BaseClass2 &lt;br /&gt;
 &lt;br /&gt;
  return 0; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;10&lt;br /&gt;
20&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==In cases of multiple inheritance: Constructors are called in order of derivation, destructors in reverse order==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
   &lt;br /&gt;
class base {&lt;br /&gt;
public:&lt;br /&gt;
  base() { cout &amp;lt;&amp;lt; &amp;quot;Constructing base\n&amp;quot;; }&lt;br /&gt;
  ~base() { cout &amp;lt;&amp;lt; &amp;quot;Destructing base\n&amp;quot;; }&lt;br /&gt;
};&lt;br /&gt;
   &lt;br /&gt;
class derived1 : public base {&lt;br /&gt;
public:&lt;br /&gt;
  derived1() { cout &amp;lt;&amp;lt; &amp;quot;Constructing derived1\n&amp;quot;; }&lt;br /&gt;
  ~derived1() { cout &amp;lt;&amp;lt; &amp;quot;Destructing derived1\n&amp;quot;; }&lt;br /&gt;
};&lt;br /&gt;
   &lt;br /&gt;
class derived2: public derived1 {&lt;br /&gt;
public:&lt;br /&gt;
  derived2() { cout &amp;lt;&amp;lt; &amp;quot;Constructing derived2\n&amp;quot;; }&lt;br /&gt;
  ~derived2() { cout &amp;lt;&amp;lt; &amp;quot;Destructing derived2\n&amp;quot;; }&lt;br /&gt;
};&lt;br /&gt;
   &lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  derived2 ob;&lt;br /&gt;
   &lt;br /&gt;
  // construct and destruct ob&lt;br /&gt;
   &lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Multiple inheritance example==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using std::ostream;&lt;br /&gt;
using std::cout;&lt;br /&gt;
using std::endl;&lt;br /&gt;
class Base1 {&lt;br /&gt;
public:&lt;br /&gt;
   Base1( int parameterValue )&lt;br /&gt;
   {&lt;br /&gt;
      value = parameterValue;&lt;br /&gt;
   }&lt;br /&gt;
   int getData() const&lt;br /&gt;
   {&lt;br /&gt;
      return value;&lt;br /&gt;
   }&lt;br /&gt;
protected:&lt;br /&gt;
   int value;&lt;br /&gt;
};&lt;br /&gt;
class Base2&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
   Base2( char characterData )&lt;br /&gt;
   {&lt;br /&gt;
      letter = characterData;&lt;br /&gt;
   }&lt;br /&gt;
   char getData() const&lt;br /&gt;
   {&lt;br /&gt;
      return letter;&lt;br /&gt;
   }&lt;br /&gt;
protected:&lt;br /&gt;
   char letter;&lt;br /&gt;
};&lt;br /&gt;
class Derived : public Base1, public Base2&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
   Derived( int integer, char character, double double1 )&lt;br /&gt;
      : Base1( integer ), Base2( character ), real( double1 ) { }&lt;br /&gt;
   double getReal() const {&lt;br /&gt;
      return real;&lt;br /&gt;
   }&lt;br /&gt;
    void display()&lt;br /&gt;
    {&lt;br /&gt;
       cout &amp;lt;&amp;lt; &amp;quot;    Integer: &amp;quot; &amp;lt;&amp;lt; value &amp;lt;&amp;lt; &amp;quot;\n  Character: &amp;quot;&lt;br /&gt;
          &amp;lt;&amp;lt; letter &amp;lt;&amp;lt; &amp;quot;\nReal number: &amp;quot; &amp;lt;&amp;lt; real;&lt;br /&gt;
    }&lt;br /&gt;
private:&lt;br /&gt;
   double real;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   Base1 base1( 10 ), *base1Ptr = 0;&lt;br /&gt;
   Base2 base2( &amp;quot;Z&amp;quot; ), *base2Ptr = 0;&lt;br /&gt;
   Derived derived( 7, &amp;quot;A&amp;quot;, 3.5 );&lt;br /&gt;
   cout &amp;lt;&amp;lt; base1.getData()&lt;br /&gt;
        &amp;lt;&amp;lt; base2.getData();&lt;br /&gt;
   derived.display();&lt;br /&gt;
   cout &amp;lt;&amp;lt; derived.Base1::getData()&lt;br /&gt;
        &amp;lt;&amp;lt; derived.Base2::getData()&lt;br /&gt;
        &amp;lt;&amp;lt; derived.getReal() &amp;lt;&amp;lt; &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
   base1Ptr = &amp;amp;derived;&lt;br /&gt;
   cout &amp;lt;&amp;lt; base1Ptr-&amp;gt;getData() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
   base2Ptr = &amp;amp;derived;&lt;br /&gt;
   cout &amp;lt;&amp;lt; base2Ptr-&amp;gt;getData() &amp;lt;&amp;lt; endl;&lt;br /&gt;
   return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;10Z    Integer: 7&lt;br /&gt;
  Character: A&lt;br /&gt;
Real number: 3.57A3.5&lt;br /&gt;
7&lt;br /&gt;
A&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Multiple Inheritance in both private and public way==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class One &lt;br /&gt;
{&lt;br /&gt;
 public:&lt;br /&gt;
  One(void) &lt;br /&gt;
  { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Constructor for One\n&amp;quot;; &lt;br /&gt;
    one = 1;&lt;br /&gt;
  };&lt;br /&gt;
  int one;&lt;br /&gt;
};&lt;br /&gt;
class Two &lt;br /&gt;
{&lt;br /&gt;
 public:&lt;br /&gt;
  Two(void) &lt;br /&gt;
  { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Constructor for Two\n&amp;quot;;&lt;br /&gt;
    two = 2;&lt;br /&gt;
  };&lt;br /&gt;
  int two;&lt;br /&gt;
};&lt;br /&gt;
class Three &lt;br /&gt;
{&lt;br /&gt;
 public:&lt;br /&gt;
  Three(void) &lt;br /&gt;
  { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Constructor for Three\n&amp;quot;; &lt;br /&gt;
    three = 3;&lt;br /&gt;
  };&lt;br /&gt;
  int three;&lt;br /&gt;
};&lt;br /&gt;
class Derived: private One, private Three, public Two &lt;br /&gt;
{&lt;br /&gt;
 public:&lt;br /&gt;
   Derived(void) : One(), Two(), Three() &lt;br /&gt;
   {&lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Derived constructor called\n&amp;quot;; };&lt;br /&gt;
   void show_value(void) { cout &amp;lt;&amp;lt; one &amp;lt;&amp;lt; two &amp;lt;&amp;lt; three &amp;lt;&amp;lt; endl; };&lt;br /&gt;
};&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   Derived my_class;&lt;br /&gt;
   my_class.show_value();&lt;br /&gt;
   cout &amp;lt;&amp;lt; my_class.two;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Multiple Inheritance to have the features from both parent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using std::cout;&lt;br /&gt;
using std::cin;&lt;br /&gt;
using std::endl;&lt;br /&gt;
class Horse&lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    Horse() { cout &amp;lt;&amp;lt; &amp;quot;Horse constructor... &amp;quot;; }&lt;br /&gt;
    virtual ~Horse() { cout &amp;lt;&amp;lt; &amp;quot;Horse destructor... &amp;quot;; }&lt;br /&gt;
    virtual void Whinny() const { cout &amp;lt;&amp;lt; &amp;quot;Whinny!... &amp;quot;; }&lt;br /&gt;
  private:&lt;br /&gt;
    int itsAge;&lt;br /&gt;
};&lt;br /&gt;
class Bird&lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    Bird() { cout &amp;lt;&amp;lt; &amp;quot;Bird constructor... &amp;quot;; }&lt;br /&gt;
    virtual ~Bird() { cout &amp;lt;&amp;lt; &amp;quot;Bird destructor... &amp;quot;; }&lt;br /&gt;
    virtual void Chirp() const { cout &amp;lt;&amp;lt; &amp;quot;Chirp... &amp;quot;;  }&lt;br /&gt;
    virtual void Fly() const&lt;br /&gt;
    {&lt;br /&gt;
       cout &amp;lt;&amp;lt; &amp;quot;fly! &amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
  private:&lt;br /&gt;
    int itsWeight;&lt;br /&gt;
};&lt;br /&gt;
class Pegasus : public Horse, public Bird&lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    void Chirp() const { Whinny(); }&lt;br /&gt;
    Pegasus() { cout &amp;lt;&amp;lt; &amp;quot;Pegasus constructor... &amp;quot;; }&lt;br /&gt;
    ~Pegasus() { cout &amp;lt;&amp;lt; &amp;quot;Pegasus destructor...  &amp;quot;; }&lt;br /&gt;
};&lt;br /&gt;
const int MagicNumber = 2;&lt;br /&gt;
int main(){&lt;br /&gt;
   Horse* Ranch[MagicNumber];&lt;br /&gt;
   Bird* Aviary[MagicNumber];&lt;br /&gt;
   Horse * pHorse;&lt;br /&gt;
   Bird * pBird;&lt;br /&gt;
   &lt;br /&gt;
   pHorse = new Pegasus;&lt;br /&gt;
   pHorse = new Horse;&lt;br /&gt;
   Ranch[0] = pHorse;&lt;br /&gt;
   pBird = new Pegasus;&lt;br /&gt;
   pBird = new Bird;&lt;br /&gt;
   Aviary[0] = pBird;&lt;br /&gt;
   Ranch[0]-&amp;gt;Whinny();&lt;br /&gt;
   delete Ranch[0];&lt;br /&gt;
   &lt;br /&gt;
   Aviary[0]-&amp;gt;Chirp();&lt;br /&gt;
   Aviary[0]-&amp;gt;Fly();&lt;br /&gt;
   delete Aviary[0];&lt;br /&gt;
   return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==multiple inheritance with employees and degrees==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;  &lt;br /&gt;
  using namespace std;  &lt;br /&gt;
  const int LEN = 80;    &lt;br /&gt;
  class student{  &lt;br /&gt;
     private:  &lt;br /&gt;
        char school[LEN];&lt;br /&gt;
        char degree[LEN];&lt;br /&gt;
     public:  &lt;br /&gt;
        void getedu(){  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter name of school or university: &amp;quot;;  &lt;br /&gt;
           cin &amp;gt;&amp;gt; school;  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter highest degree earned \n&amp;quot;;  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   (Highschool, Bachelor&amp;quot;s, Master&amp;quot;s, PhD): &amp;quot;;  &lt;br /&gt;
           cin &amp;gt;&amp;gt; degree;  &lt;br /&gt;
        }  &lt;br /&gt;
        void putedu() const  &lt;br /&gt;
        {  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   School or university: &amp;quot; &amp;lt;&amp;lt; school;  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   Highest degree earned: &amp;quot; &amp;lt;&amp;lt; degree;  &lt;br /&gt;
        }  &lt;br /&gt;
    };  &lt;br /&gt;
  class employee{  &lt;br /&gt;
     private:  &lt;br /&gt;
        char name[LEN];&lt;br /&gt;
        unsigned long number;&lt;br /&gt;
     public:  &lt;br /&gt;
        void getdata(){  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   Enter last name: &amp;quot;; cin &amp;gt;&amp;gt; name;  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter number: &amp;quot;;      cin &amp;gt;&amp;gt; number;  &lt;br /&gt;
        }  &lt;br /&gt;
        void putdata() const  &lt;br /&gt;
        {  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   Name: &amp;quot; &amp;lt;&amp;lt; name;  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   Number: &amp;quot; &amp;lt;&amp;lt; number;  &lt;br /&gt;
        }  &lt;br /&gt;
    };  &lt;br /&gt;
  class manager : private employee, private student {  &lt;br /&gt;
     private:  &lt;br /&gt;
        char title[LEN];        &lt;br /&gt;
        double dues;            &lt;br /&gt;
     public:  &lt;br /&gt;
        void getdata(){  &lt;br /&gt;
           employee::getdata();  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter title: &amp;quot;;          cin &amp;gt;&amp;gt; title;  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter golf club dues: &amp;quot;; cin &amp;gt;&amp;gt; dues;  &lt;br /&gt;
           student::getedu();  &lt;br /&gt;
        }  &lt;br /&gt;
        void putdata() const  &lt;br /&gt;
        {  &lt;br /&gt;
           employee::putdata();  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   Title: &amp;quot; &amp;lt;&amp;lt; title;  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   Golf club dues: &amp;quot; &amp;lt;&amp;lt; dues;  &lt;br /&gt;
           student::putedu();  &lt;br /&gt;
        }  &lt;br /&gt;
  };  &lt;br /&gt;
  class scientist : private employee, private student {  &lt;br /&gt;
     private:  &lt;br /&gt;
        int pubs;     &lt;br /&gt;
     public:  &lt;br /&gt;
        void getdata(){  &lt;br /&gt;
           employee::getdata();  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter number of pubs: &amp;quot;; cin &amp;gt;&amp;gt; pubs;  &lt;br /&gt;
           student::getedu();  &lt;br /&gt;
        }  &lt;br /&gt;
        void putdata() const  &lt;br /&gt;
        {  &lt;br /&gt;
           employee::putdata();  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   Number of publications: &amp;quot; &amp;lt;&amp;lt; pubs;  &lt;br /&gt;
           student::putedu();  &lt;br /&gt;
        }  &lt;br /&gt;
  };  &lt;br /&gt;
  class laborer : public employee    &lt;br /&gt;
    {  &lt;br /&gt;
  };  &lt;br /&gt;
  int main(){  &lt;br /&gt;
     manager m1;  &lt;br /&gt;
     scientist s1, s2;  &lt;br /&gt;
     laborer l1;  &lt;br /&gt;
    &lt;br /&gt;
     cout &amp;lt;&amp;lt; endl;  &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;\nEnter data for manager 1&amp;quot;;    &lt;br /&gt;
     m1.getdata();                            &lt;br /&gt;
    &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;\nEnter data for scientist 1&amp;quot;;  &lt;br /&gt;
     s1.getdata();  &lt;br /&gt;
    &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;\nEnter data for scientist 2&amp;quot;;  &lt;br /&gt;
     s2.getdata();  &lt;br /&gt;
    &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;\nEnter data for laborer 1&amp;quot;;  &lt;br /&gt;
     l1.getdata();  &lt;br /&gt;
    &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;\nData on manager 1&amp;quot;;           &lt;br /&gt;
     m1.putdata();                            &lt;br /&gt;
    &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;\nData on scientist 1&amp;quot;;  &lt;br /&gt;
     s1.putdata();  &lt;br /&gt;
    &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;\nData on scientist 2&amp;quot;;  &lt;br /&gt;
     s2.putdata();  &lt;br /&gt;
    &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;\nData on laborer 1&amp;quot;;  &lt;br /&gt;
     l1.putdata();  &lt;br /&gt;
     cout &amp;lt;&amp;lt; endl;  &lt;br /&gt;
     return 0;  &lt;br /&gt;
  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==multiple inheritance with English Distances==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;  &lt;br /&gt;
  #include &amp;lt;string&amp;gt;  &lt;br /&gt;
  using namespace std;  &lt;br /&gt;
  class Type{  &lt;br /&gt;
     private:  &lt;br /&gt;
        string dimensions;  &lt;br /&gt;
        string grade;  &lt;br /&gt;
     public:                        &lt;br /&gt;
        Type() : dimensions(&amp;quot;N/A&amp;quot;), grade(&amp;quot;N/A&amp;quot;){  }  &lt;br /&gt;
                                    &lt;br /&gt;
        Type(string di, string gr) : dimensions(di), grade(gr)  &lt;br /&gt;
        {  }  &lt;br /&gt;
        void gettype(){  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter nominal dimensions (2x4 etc.): &amp;quot;;  &lt;br /&gt;
           cin &amp;gt;&amp;gt; dimensions;  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter grade (rough, const, etc.): &amp;quot;;  &lt;br /&gt;
           cin &amp;gt;&amp;gt; grade;  &lt;br /&gt;
        }  &lt;br /&gt;
        void showtype() const       &lt;br /&gt;
        {  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   Dimensions: &amp;quot; &amp;lt;&amp;lt; dimensions;  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   Grade: &amp;quot; &amp;lt;&amp;lt; grade;  &lt;br /&gt;
        }  &lt;br /&gt;
  };&lt;br /&gt;
  class Distance{  &lt;br /&gt;
     private:  &lt;br /&gt;
        int feet;  &lt;br /&gt;
        float inches;  &lt;br /&gt;
     public:    &lt;br /&gt;
        Distance() : feet(0), inches(0.0){  } &lt;br /&gt;
        Distance(int ft, float in) : feet(ft), inches(in)  &lt;br /&gt;
          {  }  &lt;br /&gt;
        void getdist(){  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter feet: &amp;quot;;  cin &amp;gt;&amp;gt; feet;  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter inches: &amp;quot;;  cin &amp;gt;&amp;gt; inches;  &lt;br /&gt;
        }  &lt;br /&gt;
        void showdist() const       &lt;br /&gt;
        { cout  &amp;lt;&amp;lt; feet &amp;lt;&amp;lt; &amp;quot;\&amp;quot;-&amp;quot; &amp;lt;&amp;lt; inches &amp;lt;&amp;lt; &amp;quot;\&amp;quot;&amp;quot;; }  &lt;br /&gt;
  };&lt;br /&gt;
  class Lumber : public Type, public Distance  {  &lt;br /&gt;
     private:  &lt;br /&gt;
        int quantity;                      &lt;br /&gt;
        double price;                      &lt;br /&gt;
     public:                               &lt;br /&gt;
        Lumber() : Type(), Distance(), quantity(0), price(0.0)  &lt;br /&gt;
        {  }  &lt;br /&gt;
        Lumber( string di, string gr,      &lt;br /&gt;
                int ft, float in,          &lt;br /&gt;
                int qu, float prc ) :      &lt;br /&gt;
                Type(di, gr),              &lt;br /&gt;
                Distance(ft, in),          &lt;br /&gt;
                quantity(qu), price(prc)   &lt;br /&gt;
        {  }  &lt;br /&gt;
        void getlumber()  &lt;br /&gt;
        {  &lt;br /&gt;
           Type::gettype();  &lt;br /&gt;
           Distance::getdist();  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter quantity: &amp;quot;; cin &amp;gt;&amp;gt; quantity;  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;   Enter price per piece: &amp;quot;; cin &amp;gt;&amp;gt; price;  &lt;br /&gt;
        }  &lt;br /&gt;
        void showlumber() const  &lt;br /&gt;
        {  &lt;br /&gt;
           Type::showtype();  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   Length: &amp;quot;;  &lt;br /&gt;
           Distance::showdist();  &lt;br /&gt;
           cout &amp;lt;&amp;lt; &amp;quot;\n   Price for &amp;quot; &amp;lt;&amp;lt; quantity  &lt;br /&gt;
               &amp;lt;&amp;lt; &amp;quot; pieces: $&amp;quot; &amp;lt;&amp;lt; price * quantity;  &lt;br /&gt;
        }  &lt;br /&gt;
  };  &lt;br /&gt;
  int main(){  &lt;br /&gt;
     Lumber siding;                   &lt;br /&gt;
     siding.getlumber();              &lt;br /&gt;
     Lumber studs( &amp;quot;2x4&amp;quot;, &amp;quot;const&amp;quot;, 8, 0.0, 200, 4.45F );  &lt;br /&gt;
    &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;\nSiding&amp;quot;;  siding.showlumber();  &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;\nStuds&amp;quot;;     studs.showlumber();  &lt;br /&gt;
     cout &amp;lt;&amp;lt; endl;  &lt;br /&gt;
     return 0;  &lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolving Ambiguity in Case of Multiple Inheritance Involving Common Base Classes==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
typedef int HANDS;&lt;br /&gt;
enum COLOR { Red, Green, Blue, Yellow, White, Black, Brown } ;&lt;br /&gt;
class Animal        &lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    Animal(int);&lt;br /&gt;
    virtual ~Animal() { cout &amp;lt;&amp;lt; &amp;quot;Animal destructor...\n&amp;quot;; }&lt;br /&gt;
    virtual int GetAge() const { return itsAge; }&lt;br /&gt;
    virtual void SetAge(int age) { itsAge = age; }&lt;br /&gt;
  private:&lt;br /&gt;
    int itsAge;&lt;br /&gt;
};&lt;br /&gt;
Animal::Animal(int age):&lt;br /&gt;
itsAge(age)&lt;br /&gt;
{&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Animal constructor...\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
class Horse : public Animal&lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    Horse(COLOR color, HANDS height, int age);&lt;br /&gt;
    virtual ~Horse() { cout &amp;lt;&amp;lt; &amp;quot;Horse destructor...\n&amp;quot;; }&lt;br /&gt;
    virtual void Whinny()const { cout &amp;lt;&amp;lt; &amp;quot;Whinny!... &amp;quot;; }&lt;br /&gt;
    virtual HANDS GetHeight() const { return itsHeight; }&lt;br /&gt;
    virtual COLOR GetColor() const { return itsColor; }&lt;br /&gt;
  protected:&lt;br /&gt;
    HANDS itsHeight;&lt;br /&gt;
    COLOR itsColor;&lt;br /&gt;
};&lt;br /&gt;
Horse::Horse(COLOR color, HANDS height, int age):&lt;br /&gt;
Animal(age),&lt;br /&gt;
itsColor(color),itsHeight(height)&lt;br /&gt;
{&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Horse constructor...\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
class Bird : public Animal&lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    Bird(COLOR color, bool migrates, int age);&lt;br /&gt;
    virtual ~Bird() {cout &amp;lt;&amp;lt; &amp;quot;Bird destructor...\n&amp;quot;;  }&lt;br /&gt;
    virtual void Chirp()const { cout &amp;lt;&amp;lt; &amp;quot;Chirp... &amp;quot;;  }&lt;br /&gt;
    virtual void Fly()const{ cout &amp;lt;&amp;lt; &amp;quot;fly! &amp;quot;; }&lt;br /&gt;
    virtual COLOR GetColor()const { return itsColor; }&lt;br /&gt;
    virtual bool GetMigration() const { return itsMigration; }&lt;br /&gt;
  protected:&lt;br /&gt;
    COLOR itsColor;&lt;br /&gt;
    bool itsMigration;&lt;br /&gt;
};&lt;br /&gt;
Bird::Bird(COLOR color, bool migrates, int age):&lt;br /&gt;
Animal(age),&lt;br /&gt;
itsColor(color), itsMigration(migrates)&lt;br /&gt;
{&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Bird constructor...\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
class Pegasus : public Horse, public Bird&lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    void Chirp()const { Whinny(); }&lt;br /&gt;
    Pegasus(COLOR, HANDS, bool, long, int);&lt;br /&gt;
    virtual ~Pegasus() {cout &amp;lt;&amp;lt; &amp;quot;Pegasus destructor...\n&amp;quot;;}&lt;br /&gt;
    virtual long GetNumberBelievers() const&lt;br /&gt;
    { return  itsNumberBelievers; }&lt;br /&gt;
    virtual COLOR GetColor()const { return Horse::itsColor; }&lt;br /&gt;
    virtual int GetAge() const { return Horse::GetAge(); }&lt;br /&gt;
  private:&lt;br /&gt;
    long itsNumberBelievers;&lt;br /&gt;
};&lt;br /&gt;
Pegasus::Pegasus(&lt;br /&gt;
   COLOR aColor,&lt;br /&gt;
   HANDS height,&lt;br /&gt;
   bool migrates,&lt;br /&gt;
   long NumBelieve,&lt;br /&gt;
   int age):&lt;br /&gt;
   Horse(aColor, height,age),&lt;br /&gt;
   Bird(aColor, migrates,age),&lt;br /&gt;
   itsNumberBelievers(NumBelieve)&lt;br /&gt;
{&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Pegasus constructor...\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   Pegasus *pPeg = new Pegasus(Red, 5, true, 10, 2);&lt;br /&gt;
   int age = pPeg-&amp;gt;GetAge();&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;This pegasus is &amp;quot; &amp;lt;&amp;lt; age &amp;lt;&amp;lt; &amp;quot; years old.\n&amp;quot;;&lt;br /&gt;
   delete pPeg;&lt;br /&gt;
   return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>