重载(Overloading)
- 定义:在同一个作用域内,允许存在多个同名的函数,但是这些函数的参数列表必须不同(包括参数的个数、类型、顺序等)。
- 目的:通过相同的函数名来处理不同类型的参数,提高代码的灵活性。
- 发生条件:函数名相同,但参数列表不同。
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
重写(Overriding)
- 定义:在派生类中重新实现(覆盖)其基类的虚函数。发生在继承关系中,子类重新定义基类的虚函数,实现子类自己的版本。
- 目的:支持多态性,允许基类的指针或引用在运行时指向派生类对象,并调用相应的派生类函数。
- 发生条件:子类继承自父类,子类中的函数与父类中的虚函数具有相同的函数签名。
class Shape {
public:
virtual void draw() const {
// 具体的实现
}
};
class Circle : public Shape {
public:
void draw() const override {
// Circle 版本的实现,覆盖了基类的虚函数
}
};
总结
- 重载是指在同一作用域中定义多个同名函数,通过参数列表的不同来区分;
- 重写是指派生类重新实现(覆盖)其基类的虚函数,以支持多态性。
© 版权声明
本站文章由不念博客原创,未经允许严禁转载!
THE END