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