Наследование C ++

C Inheritance



Наследование - очень важная особенность объектно-ориентированного программирования. Это позволяет программисту получить класс из существующего класса. Это очень полезно, особенно в большом сложном проекте, поскольку позволяет программисту повторно использовать код.

В этой статье мы собираемся обсудить концепцию наследования в программировании на C ++. Мы объясним концепцию функции друга в C ++ на рабочих примерах.







Почему наследование?

Наследование позволяет создать новый класс или производный класс из другого класса или базового класса. Производный класс или дочерний класс будет иметь все функции родительского или базового класса. Мы можем повторно использовать код с помощью наследования.



Тип наследования

Есть разные типы наследования:



  1. Простое / одиночное наследование
  2. Иерархическое наследование
  3. Многоуровневое наследование
  4. Множественное наследование

В этой статье мы рассмотрим только простое / одиночное наследование.





Пример 1:

Теперь давайте рассмотрим пример программы, чтобы понять концепцию наследования в C ++. Мы определили базовый класс, а затем унаследовали от него другой класс. Следовательно, производный класс будет иметь функции (члены и функции) из базового класса.

#включают

используя пространство имен std;

класс Base_Class
{
общественный:
intя;
пустотаотображать()
{
Стоимость<< 'Отображение базового класса' <<я<<конец;
}

};

класс Derived_Class:общедоступный Base_Class
{
общественный:
пустотаПоказать()
{
Стоимость<< 'Шоу производного класса' <<конец;
}
};

intглавный()
{
Derived_Class dc;
Округ Колумбия.я знак равно 100;
Округ Колумбия.отображать();
Округ Колумбия.Показать();

возвращение 0;
}



Пример 2:

Это еще один пример наследования в C ++. В этом примере мы увидим, как конструкторы вызываются при создании объекта производного класса.

Как вы можете видеть ниже, мы определили два конструктора базового класса и три конструктора производного класса. Из приведенного ниже вывода ясно видно, что конструктор базового класса вызывается первым перед вызовом конструктора производного класса.

#включают
используя пространство имен std;

класс Base_Class
{
общественный:
Base_Class()
{
Стоимость<< 'Base_Class - Без параметров' <<конец;
}
Base_Class(intИкс)
{
Стоимость<< 'Base_Class - Параметры:' <<Икс<<конец;
}
};

класс Derived_Class:общедоступный Base_Class
{
общественный:
Derived_Class()
{
Стоимость<< 'Derived_Class - Без параметров' <<конец;
}
Derived_Class(intа также)
{
Стоимость<< 'Derived_Class - Параметры:' <<а также<<конец;
}
Derived_Class(intИкс,intа также):Base_Class(Икс)
{
Стоимость<< 'Параметр Derived_Class:' <<а также<<конец;
}
};

intглавный()
{
Derived_Class d(7,19);
}

Пример 3:

В этом примере мы увидим, как можно использовать объекты производного класса.

Как видите, определены два класса: Rectangle_Class и Cube_Class. Rectangle_Class - это базовый класс, от которого происходит производный класс, то есть Cube_Class. Следовательно, мы наследуем функции от Rectangle_Class до Cube_Class.

Также вы можете заметить, что мы наследуем Cube_Class с общедоступным контролем доступа. Это означает, что производный класс может получить доступ ко всем не закрытым членам базового класса.

Мы объявили объект производного класса, а затем вызываем методы из базового класса, то есть setLength () и setBreadth ().

#включают

используя пространство имен std;

класс Rectangle_Class
{
частный:
intдлина;
intширота;
общественный:
Прямоугольник_Класс();
Прямоугольник_Класс(intв,intб);
Прямоугольник_Класс(Прямоугольник_Класс&р);
intgetLength()
{
возвращениедлина;
}
intgetBreadth()
{
возвращениеширота;
}
пустотаsetLength(intв);
пустотаsetBreadth(intб);
intплощадь();
};

класс Cube_Class:общедоступный Rectangle_Class
{
частный:
intрост;
общественный:
Куб_Класс(intчас)
{
ростзнак равночас;
}
intgetHeight()
{
возвращениерост;
}
пустотаsetHeight(intчас)
{
ростзнак равночас;
}
intобъем()
{
возвращениеgetLength()*getBreadth()*рост;
}
};


Прямоугольник_Класс::Прямоугольник_Класс()
{
длиназнак равно1;
широтазнак равно1;
}
Прямоугольник_Класс::Прямоугольник_Класс(intв,intб)
{
длиназнак равнов;
широтазнак равноб;
}
Прямоугольник_Класс::Прямоугольник_Класс(Прямоугольник_Класс&р)
{
длиназнак равнор.длина;
широтазнак равнор.широта;
}
пустотаПрямоугольник_Класс::setLength(intв)
{
длиназнак равнов;
}
пустотаПрямоугольник_Класс::setBreadth(intб)
{
широтазнак равноб;
}
intПрямоугольник_Класс::площадь()
{
возвращениедлина*широта;
}

intглавный()
{
Куб_Класс c(8);
c.setLength(12);
c.setBreadth(9);
Стоимость<<'Объем есть'<<c.объем()<<конец;
}

Заключение:

В этой статье я объяснил концепцию наследования в C ++ . C ++ поддерживает различные типы наследования, включая множественное наследование (т. Е. Наследование функций от нескольких базовых классов или родительских классов). Однако для упрощения я рассмотрел здесь только одиночное наследование. Я показал три рабочих примера, чтобы объяснить, как мы можем использовать наследование в программировании на C ++ и повторно использовать код. Более того, это очень полезная функция C ++.