Дочерние классы C++

Как преобразовать строку в int в C++ Программирование и разработка

В языке программирования существует концепция наследования, используемая для создания родительско-дочерних отношений между различными классами. Когда происходит наследование, появляются дочерние классы. Термин «дочерний класс» означает, что он наследует некоторые свойства родительского класса, т.е. Базового класса. Здесь вы должны понимать, что классы C ++ инициализируются своим объектом. При наследовании будут созданы только объекты дочернего класса, но не родительский класс. Объект дочернего класса будет использоваться для выполнения или запуска родительского класса вместе с его классом.

Метод 1: простое / одиночное наследование

Мы начнем с одинарного наследования. Он содержит один единственный дочерний класс, который будет производным от единственного родительского класса. Итак, откройте терминал оболочки, используя «Ctrl + Alt + T». Убедитесь, что компилятор C ++ уже настроен в вашей системе Ubuntu 20.04. Используйте ключевое слово «touch», чтобы создать новый файл C ++ с именем «child.cc». После создания файла откройте его в редакторе, чтобы отредактировать. Мы использовали редактор Nano, чтобы открывать его прямо в редакторе терминала. Вы также можете использовать Vim или текстовый редактор. Обе команды для создания и открытия файла C ++ перечислены и показаны на следующем снимке экрана:

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

Мы добавили поток ввода-вывода в его начало. После этого был добавлен еще один стандартный заголовок C ++. После файла заголовка мы использовали стандартное пространство имен для использования операторов ввода-вывода в коде. Мы объявили родительский класс с именем «A» с единственной переменной целочисленного типа «ida», и к нему можно получить доступ где угодно в других классах, поскольку он является общедоступным. Другой класс с именем «B» был объявлен как дочерний класс, поскольку он наследует класс «A» с использованием знака «:». Оба класса здесь публичные. Дочерний класс «B» также содержит общедоступный член данных целочисленного типа с именем «idb». Затем был инициализирован основной метод. Он содержит инициализацию объекта дочернего класса «b».

Следует отметить, что в рамках наследования нет необходимости создавать объект родительского класса, если у него есть дочерний класс, наследующий его. Объект дочернего класса «b» использовался для инициализации и отображения членов общедоступных данных родительского и дочернего классов, как показано на изображении ниже. Сохраните этот код и выйдите из файла с помощью «Ctrl + S» и «Ctrl + X»:

Читайте также:  7 основных тенденций в области аналитики данных на 2021 год

что в рамках наследования нет необходимости создавать объект родительского класса

Скомпилируйте код C ++ с помощью компилятора GCC в оболочке. Компиляция прошла успешно. После выполнения у нас есть результат в виде идентификатора родительского класса и идентификатора дочернего класса:

Скомпилируйте код C ++ с помощью компилятора GCC в оболочке

Метод 2: множественное наследование

Начнем с примера множественного наследования. Снова откройте файл кода «child.cc» в редакторе Nano. Заголовочные файлы и стандартное пространство имен остались без изменений. Мы объявили два родительских класса A и B, каждый из которых содержит конструктор, то есть A () и B (). Оба конструктора содержат стандартный оператор cout, используемый для вывода на печать, и сообщают нам, в каком классе мы сейчас находимся. Был объявлен дочерний класс C, который наследует оба родительских класса A и B, используя знак «:». Этот класс не содержит никакой реализации. После инициализации и объявления класса мы использовали основной метод. Функция main () содержит инициализацию объектов дочернего класса C, то есть «obj». После создания этого объекта оба конструктора родительских классов, то есть A и B, будут выполнены автоматически.

Таким образом, оба оператора cout в функциях конструктора будут распечатаны в оболочке. Сохраните обновленный код и вернитесь в оболочку, нажав клавиши Ctrl + S и Ctrl + X:

Таким образом, оба оператора cout в функциях конструктора будут распечатаны в оболочке

Компиляция этого кода не вызывает исключения; следовательно, ошибок пока не обнаружено. Выполнение показывает результат, как и ожидалось. Оба оператора печати были отображены в оболочке, то есть оператор cout родительского класса A и B:

ыполнение показывает результат, как и ожидалось

Метод 3: многоуровневое наследование

При таком наследовании один дочерний класс будет производным и будет использовать другой класс как дочерний класс. Итак, мы открыли тот же файл кода в редакторе Nano. Заголовочные файлы оставлены без изменений. Мы объявили три класса, то есть A, B и C. Класс C является дочерним классом родительского класса B, а класс B является дочерним классом родительского класса A. Только класс A не унаследован от любого другого класса.. Все три класса содержат конструкторы, использующие оператор cout для отображения соответствующего сообщения в оболочке в соответствии с их классом. Создан объект класса C, который выполнит конструктор своего родительского класса B и, в конечном итоге, выполнит конструктор родительского класса A:

Читайте также:  Учебное пособие по циклам JavaScript: цикл for, цикл while и т.д.

При таком наследовании один дочерний класс будет производным и будет использовать другой

После компиляции и выполнения мы выполнили все операторы cout в конструкторах трех классов с одним объектом дочернего класса C, например obj:

После компиляции и выполнения мы выполнили все операторы cout в конструкторах

Метод 4: Иерархическое наследование

Наследование можно назвать иерархическим, если несколько дочерних классов являются производными от одного класса. Итак, мы немного обновили код. Дочерние классы B и C являются производными от родительского класса A из кода изображения ниже. Поскольку есть два дочерних класса, есть и два объекта. Объект «objb» относится к дочернему классу B и запускает конструктор как родительского класса A, так и дочернего класса B. Объект «objc» является дочерним классом C, выполняющим оба конструктора родительского класса A и дочернего класса B. Итак, родительский конструктор здесь выполнялся два раза:

Наследование можно назвать иерархическим, если несколько дочерних классов являются

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

запуска обновленного файла мы получаем ожидаемый

Метод 5: наследование гибридного / многолучевого распространения

Гибридное или многопутевое наследование может быть достигнуто путем объединения более одного типа наследования в одной ситуации. Мы объединяем простое / одиночное наследование, множественное наследование и многоуровневое наследование в одном примере кода. Из 4 классов класс C наследуется от класса A, показывающего простое / одиночное наследование. Класс D является производным от классов B и C и имеет множественное наследование. Хотя класс C уже наследует от класса A, таким образом, «D-> C-> A» становится иллюстрацией многоуровневого наследования. Был создан только один объект «d», то есть дочерний класс D:

Гибридное или многопутевое наследование может быть достигнуто путем объединения более

После компиляции и запуска файла результат отображается ниже:

омпиляции и запуска файла результат отображается

Заключение

В этой статье мы реализовали дочерние классы C ++ с использованием различных типов наследования. Мы начали с нуля, показав простой пример наследования того, как можно создать и использовать дочерний класс. Во всех различных примерах наследования мы более эффективно продемонстрировали дочерние классы, чтобы сделать их понятными. Надеемся, эта статья будет полезна каждому наивному пользователю C ++. Пожалуйста, ознакомьтесь с Linux Hint для получения более информативных статей.

Оцените статью
bestprogrammer.ru
Добавить комментарий