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

	<entry>
		<id>http://cppe.ru/index.php?title=C%2B%2B_Tutorial/Class/class_hierarchy&amp;diff=2297&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B_Tutorial/Class/class_hierarchy&amp;diff=2297&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://cppe.ru/index.php?title=C%2B%2B_Tutorial/Class/class_hierarchy&amp;diff=2298&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B_Tutorial/Class/class_hierarchy&amp;diff=2298&amp;oldid=prev"/>
				<updated>2010-05-25T10:29:23Z</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;==A multilevel hierarchy==&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;cstring&amp;gt; &lt;br /&gt;
using namespace std; &lt;br /&gt;
 &lt;br /&gt;
class Shape { &lt;br /&gt;
  // private &lt;br /&gt;
  double width; &lt;br /&gt;
  double height; &lt;br /&gt;
public: &lt;br /&gt;
  Shape() { &lt;br /&gt;
    width = height = 0.0; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  Shape(double w, double h) { &lt;br /&gt;
    width = w; &lt;br /&gt;
    height = h; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  Shape(double x) { &lt;br /&gt;
    width = height = x; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  void display() { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Width and height are &amp;quot; &amp;lt;&amp;lt; width &amp;lt;&amp;lt; &amp;quot; and &amp;quot; &amp;lt;&amp;lt; height &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  double getWidth() { return width; } &lt;br /&gt;
  double getHeight() { return height; } &lt;br /&gt;
  void setWidth(double w) { width = w; } &lt;br /&gt;
  void setHeight(double h) { height = h; } &lt;br /&gt;
}; &lt;br /&gt;
 &lt;br /&gt;
class Triangle : public Shape { &lt;br /&gt;
  char style[20];&lt;br /&gt;
public: &lt;br /&gt;
 &lt;br /&gt;
  /* This automatically invokes the default constructor of Shape. */ &lt;br /&gt;
  Triangle() { &lt;br /&gt;
    strcpy(style, &amp;quot;unknown&amp;quot;); &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  Triangle(char *str, double w, double h) : Shape(w, h) { &lt;br /&gt;
    strcpy(style, str); &lt;br /&gt;
  } &lt;br /&gt;
   &lt;br /&gt;
  Triangle(double x) : Shape(x) { &lt;br /&gt;
    strcpy(style, &amp;quot;isosceles&amp;quot;);  &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  double area() { &lt;br /&gt;
    return getWidth() * getHeight() / 2; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  void showStyle() { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Triangle is &amp;quot; &amp;lt;&amp;lt; style &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
  } &lt;br /&gt;
}; &lt;br /&gt;
 &lt;br /&gt;
class NameTriangle : public Triangle { &lt;br /&gt;
  char name[20]; &lt;br /&gt;
public: &lt;br /&gt;
  NameTriangle(char *clr, char *style, double w, double h) : Triangle(style, w,&lt;br /&gt;
 h) { &lt;br /&gt;
    strcpy(name, clr); &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  void displayName() { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Name is &amp;quot; &amp;lt;&amp;lt; name &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
  } &lt;br /&gt;
}; &lt;br /&gt;
 &lt;br /&gt;
int main() { &lt;br /&gt;
  NameTriangle t1(&amp;quot;A&amp;quot;, &amp;quot;right&amp;quot;, 8.0, 12.0); &lt;br /&gt;
  NameTriangle t2(&amp;quot;B&amp;quot;, &amp;quot;isosceles&amp;quot;, 2.0, 2.0); &lt;br /&gt;
 &lt;br /&gt;
  t1.showStyle(); &lt;br /&gt;
  t1.display(); &lt;br /&gt;
  t1.displayName(); &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Area is &amp;quot; &amp;lt;&amp;lt; t1.area() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
 &lt;br /&gt;
  t2.showStyle(); &lt;br /&gt;
  t2.display(); &lt;br /&gt;
  t2.displayName(); &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Area is &amp;quot; &amp;lt;&amp;lt; t2.area() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &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;Triangle is right&lt;br /&gt;
Width and height are 8 and 12&lt;br /&gt;
Name is A&lt;br /&gt;
Area is 48&lt;br /&gt;
Triangle is isosceles&lt;br /&gt;
Width and height are 2 and 2&lt;br /&gt;
Name is B&lt;br /&gt;
Area is 2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==A simple class hierarchy.==&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;cstring&amp;gt; &lt;br /&gt;
using namespace std; &lt;br /&gt;
 &lt;br /&gt;
class Shape { &lt;br /&gt;
public: &lt;br /&gt;
  double width; &lt;br /&gt;
  double height; &lt;br /&gt;
 &lt;br /&gt;
  void display() { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Width and height are &amp;quot; &amp;lt;&amp;lt;  width &amp;lt;&amp;lt; &amp;quot; and &amp;quot; &amp;lt;&amp;lt; height &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
  } &lt;br /&gt;
}; &lt;br /&gt;
 &lt;br /&gt;
// Triangle is derived from Shape. &lt;br /&gt;
class Triangle : public Shape { &lt;br /&gt;
public: &lt;br /&gt;
  char style[20]; &lt;br /&gt;
   &lt;br /&gt;
  double area() { &lt;br /&gt;
    return width * height / 2; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  void showStyle() { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Triangle is &amp;quot; &amp;lt;&amp;lt; style &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
  } &lt;br /&gt;
}; &lt;br /&gt;
 &lt;br /&gt;
int main() { &lt;br /&gt;
  Triangle t1; &lt;br /&gt;
  Triangle t2; &lt;br /&gt;
 &lt;br /&gt;
  t1.width = 4.0; &lt;br /&gt;
  t1.height = 4.0; &lt;br /&gt;
  strcpy(t1.style, &amp;quot;isosceles&amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
  t2.width = 8.0; &lt;br /&gt;
  t2.height = 12.0; &lt;br /&gt;
  strcpy(t2.style, &amp;quot;right&amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
  t1.showStyle(); &lt;br /&gt;
  t1.display(); &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Area is &amp;quot; &amp;lt;&amp;lt; t1.area() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
 &lt;br /&gt;
  t2.showStyle(); &lt;br /&gt;
  t2.display(); &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Area is &amp;quot; &amp;lt;&amp;lt; t2.area() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &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;Triangle is isosceles&lt;br /&gt;
Width and height are 4 and 4&lt;br /&gt;
Area is 8&lt;br /&gt;
Triangle is right&lt;br /&gt;
Width and height are 8 and 12&lt;br /&gt;
Area is 48&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Call constructor from base class==&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 MyType {&lt;br /&gt;
protected:&lt;br /&gt;
       float value;&lt;br /&gt;
public:&lt;br /&gt;
         float subtract(float);&lt;br /&gt;
         float add(float);&lt;br /&gt;
         void display();&lt;br /&gt;
         MyType(float);&lt;br /&gt;
         MyType();&lt;br /&gt;
};&lt;br /&gt;
MyType::MyType(float num)&lt;br /&gt;
{&lt;br /&gt;
   value = num;&lt;br /&gt;
}&lt;br /&gt;
MyType::MyType()&lt;br /&gt;
{&lt;br /&gt;
   value = 1000;&lt;br /&gt;
}&lt;br /&gt;
float MyType::subtract(float amount)&lt;br /&gt;
{&lt;br /&gt;
    value -= amount;&lt;br /&gt;
       return value;&lt;br /&gt;
}&lt;br /&gt;
float MyType::add(float amount)&lt;br /&gt;
{&lt;br /&gt;
    value += amount;&lt;br /&gt;
       return value;&lt;br /&gt;
}&lt;br /&gt;
void MyType::display()&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Your value is &amp;quot; &amp;lt;&amp;lt; value &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
class DerivedType:public MyType&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
       DerivedType(float);&lt;br /&gt;
};&lt;br /&gt;
DerivedType::DerivedType(float num):MyType(num)&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
DerivedType myType(1200);&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  float amount, balance;&lt;br /&gt;
  myType.display();&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Please enter the amount to deposit \n&amp;quot;;&lt;br /&gt;
  cin&amp;gt;&amp;gt; amount;&lt;br /&gt;
  balance = myType.add(amount);&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;New balance is &amp;quot; &amp;lt;&amp;lt; balance &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Please enter the amount to withdraw \n&amp;quot;;&lt;br /&gt;
  cin &amp;gt;&amp;gt; amount;&lt;br /&gt;
  balance = myType.subtract(amount);&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;New balance is &amp;quot; &amp;lt;&amp;lt; balance &amp;lt;&amp;lt; endl;&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;
&amp;lt;pre class=codeResult&amp;gt;Your value is 1200&lt;br /&gt;
Please enter the amount to deposit&lt;br /&gt;
123&lt;br /&gt;
New balance is 1323&lt;br /&gt;
Please enter the amount to withdraw&lt;br /&gt;
123&lt;br /&gt;
New balance is 1200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deriving ADTs from other ADTs==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;/*&lt;br /&gt;
Quote from&lt;br /&gt;
Teach Yourself C++ in 24 Hours, 4th Edition&lt;br /&gt;
Publisher: Sams; 4 edition (August 11, 2004)&lt;br /&gt;
Language: English&lt;br /&gt;
ISBN-10: 0672326817&lt;br /&gt;
ISBN-13: 978-0672326813&lt;br /&gt;
by Jesse Liberty (Author), David Horvath (Author)&lt;br /&gt;
*/ &lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 enum COLOR { Red, Green, Blue, Yellow, White, Black, Brown } ;&lt;br /&gt;
 &lt;br /&gt;
 class Animal        // common base to both horse and bird&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
     Animal(int);&lt;br /&gt;
     virtual ~Animal() { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;Animal destructor...\n&amp;quot;; &lt;br /&gt;
     }&lt;br /&gt;
     virtual int GetAge() const { &lt;br /&gt;
        return itsAge; &lt;br /&gt;
     }&lt;br /&gt;
     virtual void SetAge(int age) { &lt;br /&gt;
        itsAge = age; &lt;br /&gt;
     }&lt;br /&gt;
     virtual void Sleep() const = 0;&lt;br /&gt;
     virtual void Eat() const = 0;&lt;br /&gt;
     virtual void Reproduce() const = 0;&lt;br /&gt;
     virtual void Move() const = 0;&lt;br /&gt;
     virtual void Speak() const = 0;&lt;br /&gt;
 private:&lt;br /&gt;
     int itsAge;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 Animal::Animal(int age):itsAge(age)&lt;br /&gt;
 {&lt;br /&gt;
     std::cout &amp;lt;&amp;lt; &amp;quot;Animal constructor...\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 class Mammal : public Animal&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
     Mammal(int age):Animal(age) { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;Mammal constructor...\n&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
     virtual ~Mammal() { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;Mammal destructor...\n&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
     virtual void Reproduce() const { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;Mammal reproduction depicted...\n&amp;quot;; &lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Fish : public Animal&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
     Fish(int age):Animal(age) { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;Fish constructor...\n&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
     virtual ~Fish() { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;Fish destructor...\n&amp;quot;;  &lt;br /&gt;
     }&lt;br /&gt;
     virtual void Sleep() const { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;fish snoring...\n&amp;quot;; &lt;br /&gt;
     }&lt;br /&gt;
     virtual void Eat() const { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;fish feeding...\n&amp;quot;; &lt;br /&gt;
     }&lt;br /&gt;
     virtual void Reproduce() const { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;fish laying eggs...\n&amp;quot;; &lt;br /&gt;
     }&lt;br /&gt;
     virtual void Move() const { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;fish swimming...\n&amp;quot;;   &lt;br /&gt;
     }&lt;br /&gt;
     virtual void Speak() const { }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Horse : public Mammal&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
     Horse(int age, COLOR color ): Mammal(age), itsColor(color) { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;Horse constructor...\n&amp;quot;; &lt;br /&gt;
     }&lt;br /&gt;
     virtual ~Horse() { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;Horse destructor...\n&amp;quot;; &lt;br /&gt;
     }&lt;br /&gt;
     virtual void Speak()const { &lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;Whinny!... \n&amp;quot;; &lt;br /&gt;
     }&lt;br /&gt;
     virtual COLOR GetItsColor() const &lt;br /&gt;
         { return itsColor; }&lt;br /&gt;
     virtual void Sleep() const &lt;br /&gt;
         { std::cout &amp;lt;&amp;lt; &amp;quot;Horse snoring...\n&amp;quot;; }&lt;br /&gt;
     virtual void Eat() const &lt;br /&gt;
         { std::cout &amp;lt;&amp;lt; &amp;quot;Horse feeding...\n&amp;quot;; }&lt;br /&gt;
     virtual void Move() const &lt;br /&gt;
         { std::cout &amp;lt;&amp;lt; &amp;quot;Horse running...\n&amp;quot;;}&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
     COLOR itsColor;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Dog : public Mammal&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
     Dog(int age, COLOR color ):&lt;br /&gt;
         Mammal(age), itsColor(color) &lt;br /&gt;
         { std::cout &amp;lt;&amp;lt; &amp;quot;Dog constructor...\n&amp;quot;; }&lt;br /&gt;
     virtual ~Dog() &lt;br /&gt;
         { std::cout &amp;lt;&amp;lt; &amp;quot;Dog destructor...\n&amp;quot;; }&lt;br /&gt;
     virtual void Speak()const &lt;br /&gt;
         { std::cout &amp;lt;&amp;lt; &amp;quot;Whoof!... \n&amp;quot;; }&lt;br /&gt;
     virtual void Sleep() const &lt;br /&gt;
         { std::cout &amp;lt;&amp;lt; &amp;quot;Dog snoring...\n&amp;quot;; }&lt;br /&gt;
     virtual void Eat() const &lt;br /&gt;
         { std::cout &amp;lt;&amp;lt; &amp;quot;Dog eating...\n&amp;quot;; }&lt;br /&gt;
     virtual void Move() const  &lt;br /&gt;
         { std::cout &amp;lt;&amp;lt; &amp;quot;Dog running...\n&amp;quot;; }&lt;br /&gt;
     virtual void Reproduce() const &lt;br /&gt;
         { std::cout &amp;lt;&amp;lt; &amp;quot;Dogs reproducing...\n&amp;quot;; }&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
     COLOR itsColor;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
     Animal *pAnimal=0;&lt;br /&gt;
     pAnimal = new Dog(5,Brown);&lt;br /&gt;
     pAnimal-&amp;gt;Speak();&lt;br /&gt;
     pAnimal-&amp;gt;Eat();&lt;br /&gt;
     pAnimal-&amp;gt;Reproduce();&lt;br /&gt;
     pAnimal-&amp;gt;Move();&lt;br /&gt;
     pAnimal-&amp;gt;Sleep();&lt;br /&gt;
     delete pAnimal;&lt;br /&gt;
     pAnimal = new Horse(4,Black);&lt;br /&gt;
     pAnimal-&amp;gt;Speak();&lt;br /&gt;
     pAnimal-&amp;gt;Eat();&lt;br /&gt;
     pAnimal-&amp;gt;Reproduce();&lt;br /&gt;
     pAnimal-&amp;gt;Move();&lt;br /&gt;
     pAnimal-&amp;gt;Sleep();&lt;br /&gt;
     delete pAnimal;&lt;br /&gt;
     pAnimal = new Fish (5);&lt;br /&gt;
     pAnimal-&amp;gt;Speak();&lt;br /&gt;
     pAnimal-&amp;gt;Eat();&lt;br /&gt;
     pAnimal-&amp;gt;Reproduce();&lt;br /&gt;
     pAnimal-&amp;gt;Move();&lt;br /&gt;
     pAnimal-&amp;gt;Sleep();&lt;br /&gt;
     delete pAnimal;&lt;br /&gt;
     return 0;&lt;br /&gt;
 }&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Animal constructor...&lt;br /&gt;
Mammal constructor...&lt;br /&gt;
Dog constructor...&lt;br /&gt;
Whoof!...&lt;br /&gt;
Dog eating...&lt;br /&gt;
Dogs reproducing...&lt;br /&gt;
Dog running...&lt;br /&gt;
Dog snoring...&lt;br /&gt;
Dog destructor...&lt;br /&gt;
Mammal destructor...&lt;br /&gt;
Animal destructor...&lt;br /&gt;
Animal constructor...&lt;br /&gt;
Mammal constructor...&lt;br /&gt;
Horse constructor...&lt;br /&gt;
Whinny!...&lt;br /&gt;
Horse feeding...&lt;br /&gt;
Mammal reproduction depicted...&lt;br /&gt;
Horse running...&lt;br /&gt;
Horse snoring...&lt;br /&gt;
Horse destructor...&lt;br /&gt;
Mammal destructor...&lt;br /&gt;
Animal destructor...&lt;br /&gt;
Animal constructor...&lt;br /&gt;
Fish constructor...&lt;br /&gt;
fish feeding...&lt;br /&gt;
fish laying eggs...&lt;br /&gt;
fish swimming...&lt;br /&gt;
fish snoring...&lt;br /&gt;
Fish destructor...&lt;br /&gt;
Animal destructor...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inherit protected fields==&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 MyType {&lt;br /&gt;
protected:&lt;br /&gt;
       float value;&lt;br /&gt;
public:&lt;br /&gt;
         float remove(float);&lt;br /&gt;
         float add(float);&lt;br /&gt;
         void display();&lt;br /&gt;
         MyType();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
MyType::MyType()&lt;br /&gt;
{&lt;br /&gt;
   value = 1000;&lt;br /&gt;
}&lt;br /&gt;
float MyType::remove(float amount)&lt;br /&gt;
{&lt;br /&gt;
    value -= amount;&lt;br /&gt;
       return value;&lt;br /&gt;
}&lt;br /&gt;
float MyType::add(float amount)&lt;br /&gt;
{&lt;br /&gt;
    value += amount;&lt;br /&gt;
       return value;&lt;br /&gt;
}&lt;br /&gt;
void MyType::display()&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Your value is &amp;quot; &amp;lt;&amp;lt; value &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
class DerivedType:public MyType&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
DerivedType myDerivedType;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  float amount, value;&lt;br /&gt;
  myDerivedType.display();&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Please enter the amount to add \n&amp;quot;;&lt;br /&gt;
  cin&amp;gt;&amp;gt; amount;&lt;br /&gt;
  value = myDerivedType.add(amount);&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;New value is &amp;quot; &amp;lt;&amp;lt; value &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Please enter the amount to remove \n&amp;quot;;&lt;br /&gt;
  cin &amp;gt;&amp;gt; amount;&lt;br /&gt;
  value = myDerivedType.remove(amount);&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;New value is &amp;quot; &amp;lt;&amp;lt; value &amp;lt;&amp;lt; endl;&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;
&amp;lt;pre class=codeResult&amp;gt;Your value is 1000&lt;br /&gt;
Please enter the amount to add&lt;br /&gt;
123&lt;br /&gt;
New value is 1123&lt;br /&gt;
Please enter the amount to remove&lt;br /&gt;
123&lt;br /&gt;
New value is 1000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Multiple base class constructing and destructing==&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 base1 {&lt;br /&gt;
public:&lt;br /&gt;
  base1() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Constructing base1\n&amp;quot;; &lt;br /&gt;
  }&lt;br /&gt;
  ~base1() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Destructing base1\n&amp;quot;; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
class base2 {&lt;br /&gt;
public:&lt;br /&gt;
  base2() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Constructing base2\n&amp;quot;; &lt;br /&gt;
  }&lt;br /&gt;
  ~base2() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Destructing base2\n&amp;quot;; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
class derived: public base1, public base2 {&lt;br /&gt;
public:&lt;br /&gt;
  derived() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Constructing derived\n&amp;quot;; &lt;br /&gt;
  }&lt;br /&gt;
  ~derived() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Destructing derived\n&amp;quot;; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  derived ob;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Constructing base1&lt;br /&gt;
Constructing base2&lt;br /&gt;
Constructing derived&lt;br /&gt;
Destructing derived&lt;br /&gt;
Destructing base2&lt;br /&gt;
Destructing base1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overload across class hiearchy==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;class Base {&lt;br /&gt;
    public:&lt;br /&gt;
       int f(int i) { return (i*2); }&lt;br /&gt;
       float f(float f) { return (f*2);}&lt;br /&gt;
};&lt;br /&gt;
class Derived: public Base {&lt;br /&gt;
    public:&lt;br /&gt;
       int f(int i, int j) { return (i +j); }&lt;br /&gt;
};&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    Derived var;&lt;br /&gt;
    float f;&lt;br /&gt;
    int i;&lt;br /&gt;
    i = var.f(3, 5);   // Works&lt;br /&gt;
    //f = var.f(3.0);          // Fails&lt;br /&gt;
    return (0);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reference another class in member function==&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 ClassA {&lt;br /&gt;
public:&lt;br /&gt;
    void functionA();&lt;br /&gt;
};&lt;br /&gt;
void ClassA::functionA()&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;This is a function in ClassA \n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
class ClassB {&lt;br /&gt;
public:&lt;br /&gt;
    void functionB();&lt;br /&gt;
};&lt;br /&gt;
void ClassB::functionB() {&lt;br /&gt;
  ClassA myclass;&lt;br /&gt;
  myclass.functionA();&lt;br /&gt;
}&lt;br /&gt;
int main() {&lt;br /&gt;
  ClassB myclass;&lt;br /&gt;
  ClassA anotherclass;&lt;br /&gt;
  myclass.functionB();&lt;br /&gt;
  anotherclass.functionA();&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;This is a function in ClassA&lt;br /&gt;
This is a function in ClassA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Shadow base class function in its two children 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;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class BaseClass {&lt;br /&gt;
public:&lt;br /&gt;
       void f(float);&lt;br /&gt;
};&lt;br /&gt;
void BaseClass::f(float price)&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;the base class!\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; price * .075f;&lt;br /&gt;
}&lt;br /&gt;
class DerivedClass1:public BaseClass&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
       void f(float);&lt;br /&gt;
};&lt;br /&gt;
void DerivedClass1::f(float price)&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;the child class 1\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; price * .010f &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
class DerivedClass2:public BaseClass&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
  void f(float);&lt;br /&gt;
};&lt;br /&gt;
void DerivedClass2::f(float price)&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;the child class 2\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; price * .005f &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  DerivedClass1 myclass;&lt;br /&gt;
  DerivedClass2 anotherclass;&lt;br /&gt;
  myclass.f(100);&lt;br /&gt;
  anotherclass.f(100);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;the child class 1&lt;br /&gt;
1&lt;br /&gt;
the child class 2&lt;br /&gt;
0.5&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Shadow function with the same name in base class==&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;stdlib.h&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class BaseClass&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
       void f();&lt;br /&gt;
};&lt;br /&gt;
void BaseClass::f()&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Hey this is the base class!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
class DerivedClass:public BaseClass&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
               void f();&lt;br /&gt;
};&lt;br /&gt;
void DerivedClass::f()&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Hey this is in the child class!!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  DerivedClass myclass;&lt;br /&gt;
  myclass.f();&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;Hey this is in the child class!!&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Three level inheritance==&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 base {&lt;br /&gt;
public:&lt;br /&gt;
  base() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Constructing base\n&amp;quot;; &lt;br /&gt;
  }&lt;br /&gt;
  ~base() { &lt;br /&gt;
     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() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Constructing derived1\n&amp;quot;; &lt;br /&gt;
  }&lt;br /&gt;
  ~derived1() { &lt;br /&gt;
     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() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Constructing derived2\n&amp;quot;; &lt;br /&gt;
  }&lt;br /&gt;
  ~derived2() { &lt;br /&gt;
     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;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Constructing base&lt;br /&gt;
Constructing derived1&lt;br /&gt;
Constructing derived2&lt;br /&gt;
Destructing derived2&lt;br /&gt;
Destructing derived1&lt;br /&gt;
Destructing base&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Use typeid to test type equality==&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;typeinfo&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class Base {};&lt;br /&gt;
class Derived : public Base {};&lt;br /&gt;
int main( ) {&lt;br /&gt;
   Base b, bb;&lt;br /&gt;
   Derived d;&lt;br /&gt;
   if (typeid(b) == typeid(d)) { // No&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;b and d are of the same type.\n&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   if (typeid(b) == typeid(bb)) { // Yes&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;b and bb are of the same type.\n&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   if (typeid(d) == typeid(Derived)) { // Yes&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;d is of type Derived.\n&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;b and bb are of the same type.&lt;br /&gt;
d is of type Derived.&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>