当前位置:首页 C++ > 正文

C++零基础教程什么是多态

作者:野牛程序员:2023-12-28 12:06:48 C++阅读 2658

多态是一种面向对象编程的特性,它允许不同的类对象对同一消息(方法)做出不同的响应。在C++中,多态性通过虚函数(virtual function)来实现。

具体而言,多态性包括两种类型:编译时多态性(静态多态性)和运行时多态性(动态多态性)。

  1. 编译时多态性(静态多态性)

    #include <iostream>
    
    int add(int a, int b) {
        return a + b;
    }
    
    double add(double a, double b) {
        return a + b;
    }
    
    int main() {
        std::cout << add(5, 3) << std::endl;      // 调用第一个函数
        std::cout << add(2.5, 3.5) << std::endl;  // 调用第二个函数
        return 0;
    }
    • 通过函数重载和运算符重载实现。在编译时确定使用哪个函数或运算符。

  2. 运行时多态性(动态多态性)

    #include <iostream>
    
    class Shape {
    public:
        virtual void draw() const {
            std::cout << "Drawing a shape." << std::endl;
        }
    };
    
    class Circle : public Shape {
    public:
        void draw() const override {
            std::cout << "Drawing a circle." << std::endl;
        }
    };
    
    class Square : public Shape {
    public:
        void draw() const override {
            std::cout << "Drawing a square." << std::endl;
        }
    };
    
    void drawShape(const Shape& shape) {
        shape.draw();  // 调用相应的虚函数
    }
    
    int main() {
        Circle circle;
        Square square;
    
        drawShape(circle);  // 调用Circle的draw函数
        drawShape(square);  // 调用Square的draw函数
    
        return 0;
    }
    • 通过虚函数和指针/引用实现。在运行时根据实际对象类型确定调用哪个函数。

在运行时多态性的例子中,Shape 类的 draw 函数被声明为虚函数,并在派生类中被重写。通过基类指针或引用调用虚函数时,会根据实际对象的类型动态确定调用哪个函数。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击