C++ 函数重载与重写有何区别?

c++++ 函数重载与重写:重载:同名函数具有不同的参数类型或数量,编译时选择合适版本。重写:派生类中与基类同名函数,覆盖基类实现,提供派生类特定实现。重载特征:参数类型或数量不同,编译时绑定。重写特征:参数类型和数量相同,运行时绑定,需要继承。

C++ 函数重载与重写有何区别?

C++ 函数重载与重写:概念与区别

重载

定义:相同函数名,但具有不同的参数类型或数量的函数。语义:编译器在调用时根据参数类型或数量选择适当的函数版本。语法:

int sum(int a, int b);double sum(double a, double b);

重写

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

定义:派生类中与基类具有相同名称和签名的函数。语义:派生类中重写的函数将覆盖基类中的同名函数,从而提供派生类的特定实现。语法:

class Base {public:    virtual int add(int a, int b);};class Derived : public Base {public:    int add(int a, int b) override;};

区别

特征 重载 重写

访问级别公有或私有公有或受保护继承不需要需要参数参数类型或数量不同参数类型和数量相同绑定编译时运行时作用域同一类内基类和派生类中

实战案例

重载: 计算不同类型数字的和

#include using namespace std;int sum(int a, int b) {    return a + b;}double sum(double a, double b) {    return a + b;}int main() {    cout << "整数之和:" << sum(1, 2) << endl;    cout << "浮点数之和:" << sum(1.5, 2.5) << endl;    return 0;}

重写: 使用多态性计算各种形状的面积

#include using namespace std;class Shape {public:    virtual double area() = 0; // 纯虚函数};class Rectangle : public Shape {public:    Rectangle(double length, double width) : length(length), width(width) {}    double area() override {        return length * width;    }private:    double length;    double width;};class Circle : public Shape {public:    Circle(double radius) : radius(radius) {}    double area() override {        return 3.14 * radius * radius;    }private:    double radius;};int main() {    Shape* shapes[] = {new Rectangle(5, 10), new Circle(4)};    for (int i = 0; i < 2; i++) {        cout << "面积:" <area() << endl;    }    return 0;}

以上就是C++ 函数重载与重写有何区别?的详细内容,更多请关注创想鸟其它相关文章!

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

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

相关推荐

发表回复

登录后才能评论
关注微信