重载,重写,重载覆盖的区别是什么

2023年 12月 24日 76.7k 0

图片[1]-重载,重写,重载覆盖的区别是什么-不念博客

重载(Overload):

void print(int x) {
    // ...
}

void print(double x) {
    // ...
}

重载指的是在同一个作用域内,使用相同的函数名但参数列表不同的多个函数,以实现同一种功能的不同方式。

重载函数的区分标准是函数的参数列表(包括参数的类型、个数、顺序等)。

重载函数可以有不同的返回类型,但不能仅仅通过返回类型来区分。

重写(Override):

class Base {
public:
    virtual void print() {
        // ...
    }
};

class Derived : public Base {
public:
    void print() override {
        // ...
    }
};

重写是指在派生类中重新定义基类中的虚函数,以实现不同的行为。

重写函数的函数名、参数列表和返回类型都必须与基类中的虚函数一致。

重写函数可以通过 override 关键字进行标识,以增强代码的可读性和可维护性。

覆盖:

覆盖是一个更加宽泛的概念,它可以指代重写(Override),也可以指代其他形式的覆盖。

在某些语境下,覆盖可以指代函数的重载(Overload)或者其他概念。

在 C++ 中通常更倾向于使用“重写(Override)”来表示在派生类中重新定义基类中的虚函数的行为。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论