Реализация динамического полиморфизма в C++

C++C++Beginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном задании мы реализуем концепцию полиморфизма в C++. Полиморфизм - это концепция объектно-ориентированного программирования, при которой одна и та же функция может использоваться по-разному. Существует два типа полиморфизма: полиморфизм времени компиляции (статический полиморфизм) и полиморфизм времени выполнения (динамический полиморфизм). В этом лабораторном задании мы сосредоточимся на полиморфизме времени выполнения (динамическом полиморфизме).


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp/OOPGroup -.-> cpp/classes_objects("Classes/Objects") cpp/OOPGroup -.-> cpp/class_methods("Class Methods") cpp/OOPGroup -.-> cpp/inheritance("Inheritance") cpp/OOPGroup -.-> cpp/polymorphism("Polymorphism") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/classes_objects -.-> lab-96154{{"Реализация динамического полиморфизма в C++"}} cpp/class_methods -.-> lab-96154{{"Реализация динамического полиморфизма в C++"}} cpp/inheritance -.-> lab-96154{{"Реализация динамического полиморфизма в C++"}} cpp/polymorphism -.-> lab-96154{{"Реализация динамического полиморфизма в C++"}} cpp/output -.-> lab-96154{{"Реализация динамического полиморфизма в C++"}} cpp/files -.-> lab-96154{{"Реализация динамического полиморфизма в C++"}} cpp/code_formatting -.-> lab-96154{{"Реализация динамического полиморфизма в C++"}} end

Создайте новый файл main.cpp

Сначала мы создадим новый файл на C++ с именем main.cpp в каталоге ~/project:

$ cd ~/project
$ touch main.cpp

Добавьте код для реализации полиморфизма

В этом шаге мы создадим класс под названием Shape. Класс Shape будет иметь виртуальную функцию под названием area(). Затем мы создадим два класса Rectangle и Triangle, которые будут наследовать класс Shape и будут переопределять виртуальную функцию area(). Как только классы будут созданы, мы создадим массив объектов класса Shape, а затем пройдем по массиву, чтобы вызвать функцию area() каждого объекта.

#include <iostream>
using namespace std;

class Shape {
    public:
        virtual float area() {
            return 0;
        }
};

class Rectangle: public Shape {
    public:
        float area() {
            cout << "Rectangle class area()" << endl;
            return 0;
        }
};

class Triangle: public Shape {
    public:
        float area() {
            cout << "Triangle class area()" << endl;
            return 0;
        }
};

int main() {
    Shape *shape;
    Rectangle rec;
    Triangle tri;

    shape = &rec;
    shape->area();

    shape = &tri;
    shape->area();

    return 0;
}

Скомпилируйте и запустите код

В этом шаге мы скомпилируем и запустим код с использованием следующих команд:

$ g++ main.cpp -o main
$./main

Выводом вышеуказанной программы будет:

Rectangle class area()
Triangle class area()

Резюме

В этом лабораторном задании мы узнали, как реализовать концепцию полиморфизма в C++. Мы создали класс с виртуальной функцией под названием Shape. Затем мы создали два класса Rectangle и Triangle, которые наследовали класс Shape и переопределили виртуальную функцию area(). Наконец, мы создали объекты классов Rectangle и Triangle и вызвали функцию area() с использованием объекта базового класса Shape, что привело к вызову соответствующих классов.