函数重写(Override):
函数重写是在子类中定义一个与父类中同名的方法,以覆盖父类中的方法。通过函数重写,子类可以扩展或修改父类中原有的行为。在C++中,如果子类重写了一个父类的方法,那么在调用该方法时,将调用子类中的方法,而不是父类中的方法。
例如:
class Animal {
public:
    virtual void makeSound() {
        cout << "Animal is making a sound." << endl;
    }
};
class Dog : public Animal {
public:
    void makeSound() override {
        cout << "Dog is barking." << endl;
    }
};
int main() {
    Animal* animal = new Dog();
    animal->makeSound(); // 输出 "Dog is barking."
    delete animal;
    return 0;
}
在上面的示例中,Animal类定义了一个虚函数makeSound(),Dog类继承了Animal类并重写了makeSound()方法。在main()函数中,我们创建了一个指向Dog对象的Animal指针,并调用了makeSound()方法。由于Dog类重写了makeSound()方法,因此实际调用的是Dog类中的makeSound()方法,而不是Animal类中的makeSound()方法。
函数重载(Overload):
函数重载是指在同一个类中定义多个同名方法,但它们的参数列表不同。通过函数重载,可以在同一个类中使用多个同名方法来处理不同的参数。在C++中,如果一个类中有多个同名方法,那么在调用该方法时,将根据参数列表的不同来选择要调用的方法
例如:
class Calculator {
public:
    int add(int a, int b) {
        return a + b;
    }
    double add(double a, double b) {
        return a + b;
    }
};
int main() {
    Calculator calculator;
    int result1 = calculator.add(2, 3); // 调用 int add(int a, int b) 方法,返回 5
    double result2 = calculator.add(2.5, 3.5); // 调用 double add(double a, double b) 方法,返回 6.0
    return 0;
}