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%2FClass%2FInheritance</id>
		<title>C++/Class/Inheritance - История изменений</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%2FClass%2FInheritance"/>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Class/Inheritance&amp;action=history"/>
		<updated>2026-04-18T23:52:38Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Class/Inheritance&amp;diff=1328&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/Class/Inheritance&amp;diff=1328&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:06Z</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/Class/Inheritance&amp;diff=1329&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/Class/Inheritance&amp;diff=1329&amp;oldid=prev"/>
				<updated>2010-05-25T10:25:34Z</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;==Access control under inheritance==&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;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class Enemy&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
    Enemy(): m_Damage(10) {} &lt;br /&gt;
    &lt;br /&gt;
    void Attack() const&lt;br /&gt;
    { cout &amp;lt;&amp;lt; &amp;quot;Attack inflicts &amp;quot; &amp;lt;&amp;lt; m_Damage &amp;lt;&amp;lt; &amp;quot; damage points!\n&amp;quot;; }  &lt;br /&gt;
protected:&lt;br /&gt;
    int m_Damage;&lt;br /&gt;
};&lt;br /&gt;
class Boss : public Enemy&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
    Boss(): m_DamageMultiplier(3) {}&lt;br /&gt;
        &lt;br /&gt;
    void SpecialAttack() const&lt;br /&gt;
    { cout &amp;lt;&amp;lt; &amp;quot;Special Attack inflicts &amp;quot; &amp;lt;&amp;lt; (m_DamageMultiplier * m_Damage); &lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot; damage points!\n&amp;quot;; }&lt;br /&gt;
private:&lt;br /&gt;
    int m_DamageMultiplier;&lt;br /&gt;
};&lt;br /&gt;
int main()&lt;br /&gt;
{ &lt;br /&gt;
    Enemy enemy1;&lt;br /&gt;
    enemy1.Attack();&lt;br /&gt;
    Boss boss1;&lt;br /&gt;
    boss1.Attack();&lt;br /&gt;
    boss1.SpecialAttack();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==A simple example of inheritance.==&lt;br /&gt;
&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;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class BaseClass {&lt;br /&gt;
  int i;&lt;br /&gt;
public:&lt;br /&gt;
  void setInt(int n);&lt;br /&gt;
  int getInt();&lt;br /&gt;
};&lt;br /&gt;
class DerivedClass : public BaseClass {&lt;br /&gt;
  int j;&lt;br /&gt;
public:&lt;br /&gt;
  void setJ(int n);&lt;br /&gt;
  int mul();&lt;br /&gt;
};&lt;br /&gt;
void BaseClass::setInt(int n)&lt;br /&gt;
{&lt;br /&gt;
  i = n;&lt;br /&gt;
}&lt;br /&gt;
int BaseClass::getInt()&lt;br /&gt;
{&lt;br /&gt;
  return i;&lt;br /&gt;
}&lt;br /&gt;
void DerivedClass::setJ(int n)&lt;br /&gt;
{&lt;br /&gt;
  j = n;&lt;br /&gt;
}&lt;br /&gt;
int DerivedClass::mul()&lt;br /&gt;
{&lt;br /&gt;
  return j * getInt();&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  DerivedClass ob;&lt;br /&gt;
  ob.setInt(10);        // load i in BaseClass&lt;br /&gt;
  ob.setJ(4);          // load j in DerivedClass&lt;br /&gt;
  cout &amp;lt;&amp;lt; ob.mul();     // displays 40&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==call contructor from parent class==&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;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class Book &lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    Book(char *title) { strcpy(Book::title, title); }; &lt;br /&gt;
    void show_title(void) { cout &amp;lt;&amp;lt; title &amp;lt;&amp;lt; endl; };&lt;br /&gt;
  protected:&lt;br /&gt;
    float cost;&lt;br /&gt;
    void show_cost(void) { cout &amp;lt;&amp;lt; cost &amp;lt;&amp;lt; endl; };&lt;br /&gt;
  private:&lt;br /&gt;
    char title[64];&lt;br /&gt;
};&lt;br /&gt;
class LibraryCard : public Book &lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    LibraryCard(char *title, char *author, char *publisher) : Book(title) &lt;br /&gt;
      { &lt;br /&gt;
        strcpy(LibraryCard::author, author); &lt;br /&gt;
        strcpy(LibraryCard::publisher, publisher); &lt;br /&gt;
        cost = 49.95;&lt;br /&gt;
      };&lt;br /&gt;
    void show_library(void) &lt;br /&gt;
  { &lt;br /&gt;
        show_title();&lt;br /&gt;
        show_cost();&lt;br /&gt;
        cout &amp;lt;&amp;lt; author &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; publisher; &lt;br /&gt;
  };&lt;br /&gt;
  private:&lt;br /&gt;
    char author[64];&lt;br /&gt;
    char publisher[64];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   LibraryCard card(&amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;);&lt;br /&gt;
   card.show_library();&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Call parent constructor and pass in parameter==&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;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class base &lt;br /&gt;
{&lt;br /&gt;
 protected:&lt;br /&gt;
   int i;&lt;br /&gt;
 public:&lt;br /&gt;
   base(int x) &lt;br /&gt;
   {&lt;br /&gt;
     i=x;&lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Constructing base.\n&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   ~base(void) {cout &amp;lt;&amp;lt; &amp;quot;Destructing base.\n&amp;quot;;}&lt;br /&gt;
 };&lt;br /&gt;
class derived : public base &lt;br /&gt;
{&lt;br /&gt;
   int j;&lt;br /&gt;
 public:&lt;br /&gt;
   derived(int x, int y): base(y){&lt;br /&gt;
     j=x; &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Constructing derived.\n&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   ~derived(void) {cout &amp;lt;&amp;lt; &amp;quot;Destructing derived.\n&amp;quot;;}&lt;br /&gt;
   void show(void) {cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot;, &amp;quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; endl;}&lt;br /&gt;
 };&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   derived object(3,4);&lt;br /&gt;
   object.show();&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cascade constructor and destructor call==&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;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class base &lt;br /&gt;
{&lt;br /&gt;
 public:&lt;br /&gt;
   base(void) {cout &amp;lt;&amp;lt; &amp;quot;Constructing base.\n&amp;quot;;}&lt;br /&gt;
   ~base(void) {cout &amp;lt;&amp;lt; &amp;quot;Destructing base.\n&amp;quot;;}&lt;br /&gt;
 };&lt;br /&gt;
class derived1 : public base &lt;br /&gt;
{&lt;br /&gt;
 public:&lt;br /&gt;
   derived1(void) {cout &amp;lt;&amp;lt; &amp;quot;Constructing derived1.\n&amp;quot;;}&lt;br /&gt;
   ~derived1(void) {cout &amp;lt;&amp;lt; &amp;quot;Destructing derived1.\n&amp;quot;;}&lt;br /&gt;
 };&lt;br /&gt;
class derived2 : public derived1 &lt;br /&gt;
{&lt;br /&gt;
 public:&lt;br /&gt;
   derived2(void) {cout &amp;lt;&amp;lt; &amp;quot;Constructing derived2.\n&amp;quot;;}&lt;br /&gt;
   ~derived2(void) {cout &amp;lt;&amp;lt; &amp;quot;Destructing derived2.\n&amp;quot;;}&lt;br /&gt;
 };&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   derived2 object;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Demonstrate inheriting a protected base class.==&lt;br /&gt;
&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;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class BaseClass {&lt;br /&gt;
  int i;&lt;br /&gt;
protected:&lt;br /&gt;
  int j;&lt;br /&gt;
public:&lt;br /&gt;
  int k;&lt;br /&gt;
  void setInt(int a) { &lt;br /&gt;
     i = a; &lt;br /&gt;
  }&lt;br /&gt;
  int getInt() { &lt;br /&gt;
     return i; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class DerivedClass : protected BaseClass {  // Inherit BaseClass as protected.&lt;br /&gt;
public:&lt;br /&gt;
  void setj(int a) { &lt;br /&gt;
     j = a; &lt;br /&gt;
  } &lt;br /&gt;
  void setk(int a) { &lt;br /&gt;
     k = a; &lt;br /&gt;
  } &lt;br /&gt;
  int getj() { &lt;br /&gt;
     return j; &lt;br /&gt;
  }&lt;br /&gt;
  int getk() { &lt;br /&gt;
     return k; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  DerivedClass ob;&lt;br /&gt;
  ob.setk(10);&lt;br /&gt;
  cout &amp;lt;&amp;lt; ob.getk() &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  ob.setj(12);&lt;br /&gt;
  cout &amp;lt;&amp;lt; ob.getj() &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Inherit base as private==&lt;br /&gt;
&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;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class BaseClass {&lt;br /&gt;
  int x;&lt;br /&gt;
public:&lt;br /&gt;
  void setx(int n) { &lt;br /&gt;
     x = n; &lt;br /&gt;
  }&lt;br /&gt;
  void showx() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
// Inherit BaseClass as private.&lt;br /&gt;
class DerivedClass : private BaseClass {&lt;br /&gt;
  int y;&lt;br /&gt;
public:&lt;br /&gt;
  &lt;br /&gt;
  void setxy(int n, int m) { &lt;br /&gt;
     setx(n);             // setx is accessible from within DerivedClass&lt;br /&gt;
     y = m; &lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  void showxy() { &lt;br /&gt;
     showx();             // showx is accessible from within DerivedClass&lt;br /&gt;
     cout &amp;lt;&amp;lt; y &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;
{&lt;br /&gt;
  DerivedClass ob;&lt;br /&gt;
  ob.setxy(10, 20); &lt;br /&gt;
  ob.showxy();&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Make field public during private inheritance==&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;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class base &lt;br /&gt;
{&lt;br /&gt;
   int i;&lt;br /&gt;
 public:&lt;br /&gt;
   int j, k;&lt;br /&gt;
   void seti(int x) {i = x;}&lt;br /&gt;
   int geti(void) {return i;}&lt;br /&gt;
};&lt;br /&gt;
class derived : private base &lt;br /&gt;
{&lt;br /&gt;
 public:&lt;br /&gt;
                  &lt;br /&gt;
   base::j;       &lt;br /&gt;
   base::seti;    &lt;br /&gt;
   base::geti;    &lt;br /&gt;
   int a;&lt;br /&gt;
};&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   derived object;&lt;br /&gt;
   object.j = 20; // legal because j is public&lt;br /&gt;
   object.a = 40;&lt;br /&gt;
   object.seti(10);&lt;br /&gt;
   cout &amp;lt;&amp;lt; object.geti() &amp;lt;&amp;lt; &amp;quot;, &amp;quot; &amp;lt;&amp;lt; object.j &amp;lt;&amp;lt; &amp;quot;, &amp;quot; &amp;lt;&amp;lt; object.a;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Public inheritance==&lt;br /&gt;
&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;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class BaseClass {&lt;br /&gt;
protected:&lt;br /&gt;
  int i, j; // private to BaseClass, but accessible to DerivedClass&lt;br /&gt;
public:&lt;br /&gt;
  void set(int a, int b) { &lt;br /&gt;
     i = a; &lt;br /&gt;
     j = b; &lt;br /&gt;
  }&lt;br /&gt;
  void show() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; endl; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
class DerivedClass : public BaseClass {&lt;br /&gt;
  int k;&lt;br /&gt;
public:&lt;br /&gt;
  // DerivedClass may access BaseClass&amp;quot;s i and j&lt;br /&gt;
  void setk() { &lt;br /&gt;
     k = i*j; &lt;br /&gt;
  }&lt;br /&gt;
  void showk() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; k &amp;lt;&amp;lt; endl; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  DerivedClass ob;&lt;br /&gt;
  ob.set(2, 3);&lt;br /&gt;
  ob.show();   &lt;br /&gt;
  ob.setk();&lt;br /&gt;
  ob.showk();&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Share member variables between sub class==&lt;br /&gt;
&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;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class AreaClass {&lt;br /&gt;
public:&lt;br /&gt;
  double height;&lt;br /&gt;
  double width;&lt;br /&gt;
};&lt;br /&gt;
class Rectangle : public AreaClass {&lt;br /&gt;
public:&lt;br /&gt;
  Rectangle(double h, double w) { &lt;br /&gt;
     height = h; &lt;br /&gt;
     width = w; &lt;br /&gt;
  }&lt;br /&gt;
  double area() { &lt;br /&gt;
     return height * width; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
class Isosceles : public AreaClass {&lt;br /&gt;
public:&lt;br /&gt;
  Isosceles(double h, double w) { &lt;br /&gt;
     height = h; &lt;br /&gt;
     width = w; &lt;br /&gt;
  }&lt;br /&gt;
  double area() { &lt;br /&gt;
     return 0.5 * width * height; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
class cylinder : public AreaClass {&lt;br /&gt;
public:&lt;br /&gt;
  cylinder(double h, double w) { &lt;br /&gt;
     height = h; &lt;br /&gt;
     width = w; &lt;br /&gt;
  }&lt;br /&gt;
  double area()&lt;br /&gt;
  { &lt;br /&gt;
    return (2 * 3.1416 * (width/2) * (width/2)) + (3.1416 * width * height); &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  Rectangle rectangleObject(10.0, 5.0);&lt;br /&gt;
  Isosceles triangleObject(4.0, 6.0);&lt;br /&gt;
  cylinder cylinderObject(3.0, 4.0);&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Rectangle: &amp;quot; &amp;lt;&amp;lt; rectangleObject.area() &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Triangle: &amp;quot; &amp;lt;&amp;lt; triangleObject.area() &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Cylinder: &amp;quot; &amp;lt;&amp;lt; cylinderObject.area() &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Three level public inheriance==&lt;br /&gt;
&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;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class BaseClass {&lt;br /&gt;
protected:&lt;br /&gt;
  int i, j;&lt;br /&gt;
public:&lt;br /&gt;
  void set(int a, int b) { &lt;br /&gt;
     i = a; &lt;br /&gt;
     j = b; &lt;br /&gt;
  }&lt;br /&gt;
  void show() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; endl; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
// i and j inherited as protected.&lt;br /&gt;
class DerivedClass1 : public BaseClass {&lt;br /&gt;
  int k;&lt;br /&gt;
public:&lt;br /&gt;
  void setk() { &lt;br /&gt;
     k = i*j; &lt;br /&gt;
  } &lt;br /&gt;
  void showk() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; k &amp;lt;&amp;lt; endl; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class DerivedClass2 : public DerivedClass1 {&lt;br /&gt;
  int m;              // i and j inherited indirectly through DerivedClass1.&lt;br /&gt;
public:&lt;br /&gt;
  void setm() { &lt;br /&gt;
     m = i-j; &lt;br /&gt;
  }&lt;br /&gt;
  void showm() { &lt;br /&gt;
     cout &amp;lt;&amp;lt; m &amp;lt;&amp;lt; endl; &lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  DerivedClass1 object1;&lt;br /&gt;
  DerivedClass2 object2;&lt;br /&gt;
  object1.set(2, 3);&lt;br /&gt;
  object1.show();&lt;br /&gt;
  object1.setk();&lt;br /&gt;
  object1.showk();&lt;br /&gt;
  object2.set(3, 4);&lt;br /&gt;
  object2.show();&lt;br /&gt;
  object2.setk();&lt;br /&gt;
  object2.setm();&lt;br /&gt;
  object2.showk();&lt;br /&gt;
  object2.showm();&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Virtual functions retain virtual nature when inherited.==&lt;br /&gt;
&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;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class BaseClass {&lt;br /&gt;
public:&lt;br /&gt;
  virtual void myFunction()&lt;br /&gt;
  {&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Using BaseClass version of myFunction()\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
class DerivedClass1 : public BaseClass {&lt;br /&gt;
public:&lt;br /&gt;
  void myFunction() &lt;br /&gt;
  {&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Using DerivedClass1&amp;quot;s version of myFunction()\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
class DerivedClass2 : public DerivedClass1 {&lt;br /&gt;
public:&lt;br /&gt;
  void myFunction() &lt;br /&gt;
  {&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Using DerivedClass2&amp;quot;s version of myFunction()\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  BaseClass *p;&lt;br /&gt;
  BaseClass ob;&lt;br /&gt;
  DerivedClass1 derivedObject1;&lt;br /&gt;
  DerivedClass2 derivedObject2;&lt;br /&gt;
  p = &amp;amp;ob;&lt;br /&gt;
  p-&amp;gt;myFunction();                   // use BaseClass&amp;quot;s myFunction()&lt;br /&gt;
  p = &amp;amp;derivedObject1;&lt;br /&gt;
  p-&amp;gt;myFunction();                   // use DerivedClass1&amp;quot;s myFunction()&lt;br /&gt;
  p = &amp;amp;derivedObject2;&lt;br /&gt;
  p-&amp;gt;myFunction();                   // use DerivedClass2&amp;quot;s myFunction()&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>