覆盖与重载与隐藏的区别与联系c++
时间: 2024-08-16 15:09:10 浏览: 50
C++成员函数的重载、覆盖与隐藏
覆盖、重载和隐藏都是C++中与函数或成员函数相关的术语:
1. **重载** (Overload):
- 它是指在同一作用域内,可以有多个同名函数,但它们的参数列表(即参数类型、个数或顺序)不同。这样可以根据传入的实际参数类型自动选择合适的函数执行。
2. **覆盖** (Overriding):
- 这是在继承层次结构中发生的,子类提供了一个与父类同名、同参数列表(包括返回类型)的方法。当通过父类指针或引用调用这个方法时,实际执行的是子类的方法。这是多态的一个体现,用于实现运行时的行为改变。
3. **隐藏** (Hiding):
- 当子类中有与基类同名的非虚函数时,基类的该函数就会被隐藏。在这种情况下,如果仅通过基类指针访问,会直接调用基类的函数,不会看到子类的修改。只有通过子类对象才能访问到子类版本的函数。
**区别与联系**:
- 重载关注的是同名函数,通过参数差异区分;
- 覆盖则是继承中的一种,强调的是行为替换;
- 隐藏则是隐藏了继承关系中的某个函数,需要通过子类访问子类版本。
阅读全文