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



