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

图片[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)”来表示在派生类中重新定义基类中的虚函数的行为。

© 版权声明
THE END