C++中多态性如何实现

发布时间:2024-12-23 12:16:15 作者:小樊
来源:亿速云 阅读:78

在C++中,多态性是通过虚函数(virtual function)实现的。虚函数是在基类中声明的,可以在派生类中重写(override)它。当通过基类指针或引用调用虚函数时,实际调用的函数是基类中定义的版本,但在运行时会根据对象的实际类型来决定调用哪个版本的函数。这就是动态绑定或多态性的概念。

下面是一个简单的示例,展示了如何在C++中实现多态性:

#include <iostream>

// 基类 Shape
class Shape {
public:
    // 虚函数 area()
    virtual double area() const {
        return 0.0;
    }
};

// 派生类 Circle,继承自 Shape
class Circle : public Shape {
public:
    // 重写虚函数 area()
    double area() const override {
        return 3.14 * radius * radius;
    }

private:
    double radius = 5.0;
};

// 派生类 Rectangle,继承自 Shape
class Rectangle : public Shape {
public:
    // 重写虚函数 area()
    double area() const override {
        return width * height;
    }

private:
    double width = 4.0;
    double height = 6.0;
};

int main() {
    // 使用基类指针指向派生类对象
    Shape* shape1 = new Circle();
    Shape* shape2 = new Rectangle();

    // 通过基类指针调用虚函数 area()
    std::cout << "Circle area: " << shape1->area() << std::endl;
    std::cout << "Rectangle area: " << shape2->area() << std::endl;

    // 释放内存
    delete shape1;
    delete shape2;

    return 0;
}

在这个示例中,我们定义了一个基类Shape和两个派生类CircleRectangle。基类中有一个虚函数area(),派生类中重写了这个函数。在main()函数中,我们使用基类指针分别指向派生类对象,并通过基类指针调用虚函数area()。运行时,根据对象的实际类型(CircleRectangle),调用了相应的area()函数版本。

推荐阅读:
  1. C#中多态性指的是什么
  2. 如何在C#中实现多态性

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:C#中如何处理空引用异常

下一篇:C#中接口与抽象类区别

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》