Разработка приложений на C++
  • Введение
  • Особенности разработки программ на С++
    • Указатель на функцию
    • Преобразование типов
    • Наследование
    • Виртуальные функции
    • Перегрузка операций
    • Функциональные объекты
    • Шаблоны
    • Пространства имён
    • Обработка исключительных ситуаций
    • Немного о компиляции и сборке
    • Рекоммендации по написанию кода
    • Новые возможности стандарта С++11
    • Терминология
  • Понятие структур данных
    • Массивы
    • Динамические структуры
  • Метапрограммирование
    • Шаблоны функций
    • Шаблоны классов
    • Специализация шаблонов
      • Пример: вычисление факториала
      • Пример: числа Фиббоначчи
    • Конфигурации шаблонных классов
  • Стандартная библиотека С++
    • Обзор стандартной библиотеки С++
    • Структура стандартной библиотеки С++
      • Концепции
    • Ввод-вывод данных
    • Примитивы, определённые в библиотеке STL
    • Итераторы
    • Контейнеры
      • Inplus: Как это работает
    • Алгоритмы
      • inplus: Как это работает
    • Примеры использования стандартной библиотеки С++
    • Стандартная библиотека С++/Вопросы
    • Стандартная библиотека С++/Примеры лабораторных работ
  • Разработка и использование библиотек программирования
    • Создание библиотек программирования
    • Использование динамических библиотек
    • Вопросы
    • Примеры лабораторных работ
  • Ответы на вопросы
Powered by GitBook
On this page
  1. Особенности разработки программ на С++

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

Наследование является одним из механизмов объектно-ориентированного программирования.

Класс в программировании описывает некоторое множество элементов (объектов) с общими свойствами (которые определяются полями класса) и поведением (методы класса). Некоторые из этих элементов обладают дополнительными свойствами - они образуют подмножество данного множества. Соответственно, это подмножество будет описываться некоторым классом, схожим с первоначальным, но с дополнительными полями и/или методами. Этот класс называется производным классом (дочерним классом, классом-потомком), а начальный класс называется базовым классом или классом-предком.

пример наследования:

class A {
    int field;
public:
    A(): field(0) {}
};
class B: public A {
    bool activity;
public:
    B(): A(), activity(true) {}
    bool isActive() const {
        return activity;
    }
};

В связи с тем, что производный класс описывает некоторое подмножество элементов базового класса, указатель на объект базового класса может ссылаться и на объект производного класса. Обратное утверждение неверное (указатель на объект класса-потомка не может ссылаться на объект базового класса).

Пример:

A* a = new B(); // OK!
B* b = new A(); // ERROR!

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

#include <cstdio>
class Parent{
public:
    Parent(){}
    void Print(){ puts("Parent"); }
};
class Child: Parent{
public:
    Child(){}
    void Print(){ puts("Child"); }
};
int main(){
    Child c;
    c.Print();
    return 0;
}
PreviousПреобразование типовNextВиртуальные функции

Last updated 2 years ago