在 C++ 中实现动态多态性

C++C++Beginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将实现 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 文件

首先,我们将在 ~/project 目录下创建一个名为 main.cpp 的 C++ 文件:

$ cd ~/project
$ touch main.cpp

添加代码实现多态性

在这一步中,我们将创建一个名为 Shape 的类。Shape 类将包含一个名为 area() 的虚函数。然后,我们将创建两个类 RectangleTriangle,它们将继承 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++ 中实现多态性的概念。我们创建了一个包含虚函数 area() 的类 Shape。然后,我们创建了两个类 RectangleTriangle,它们继承了 Shape 类并重写了虚函数 area()。最后,我们创建了 RectangleTriangle 类的对象,并通过基类 Shape 的对象调用 area() 函数,从而实现了对相应类的调用。