C++ 函数重载和重写中多态性的体现

c++++ 中的多态性:函数重载允许具有相同名称但不同参数列表的多个函数,根据调用时的参数类型选择执行的函数。函数重写允许派生类重新定义基类中已存在的方法,从而实现不同类型的行为,具体取决于对象的类型。

C++ 函数重载和重写中多态性的体现

C++ 函数重载和重写中多态性的体现

多态性是面向对象编程的关键概念之一。它允许不同类型(派生类)的对象对相同的函数调用做出不同的响应。C++ 通过函数重载(overloading)和重写(overriding)实现了多态性。

函数重载

立即学习“C++免费学习笔记(深入)”;

函数重载是指具有相同名称但不同参数列表的多个函数。编译器将根据实际调用时的参数类型来选择正确的函数。例如,以下代码重载了 area() 函数,它可以计算圆或矩形的面积:

class Circle {public:    double area(double radius) {        return 3.14159 * radius * radius;    }};class Rectangle {public:    double area(double length, double width) {        return length * width;    }};

重写

重写是指派生类中重新定义基类中已存在的方法。它允许派生类提供自己的实现,从而实现不同类型的行为。例如,以下代码在派生类 Square 中重写了基类 Rectanglearea() 方法来计算正方形的面积:

class Rectangle {public:    virtual double area(double length, double width) {        return length * width;    }};class Square : public Rectangle {public:    virtual double area(double side) override {        return side * side;    }};

实战案例

考虑一个图形库,其中有 Shape 基类和 CircleRectangleSquare 派生类。我们想创建一个函数 draw() 来绘制不同的图形。通过使用重载,我们可以提供不同的 draw() 方法来处理每种形状类型:

struct IShape {    virtual void draw() = 0;};struct Circle : public IShape {    void draw() override {        // 代码绘制圆    }};struct Rectangle : public IShape {    void draw() override {        // 代码绘制矩形    }};struct Square : public Rectangle {    void draw() override {        // 代码绘制正方形    }};

在调用 draw() 方法时,C++ 将根据实际对象的类型选择正确的函数版本。这使我们可以编写通用代码来处理不同类型的图形,而无需显式转换或强制转换。

以上就是C++ 函数重载和重写中多态性的体现的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1447569.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月18日 00:42:00
下一篇 2025年12月18日 00:42:17

相关推荐

发表回复

登录后才能评论
关注微信