C++中的重载、隐藏和重写,举具体例子
时间: 2024-09-08 17:03:04 浏览: 57
C++中重载、重写(覆盖)和隐藏的区别实例分析
在C++中,函数的重载(Overloading)、隐藏(Hiding)和重写(Overriding)是面向对象编程的重要概念:
1. **函数重载(Function Overload)**:
函数重载是指在同一作用域内定义两个或多个同名函数,它们的参数列表(包括参数类型和数量)不同。例如:
```cpp
void print(int num) { std::cout << "打印整数:" << num; }
void print(double d) { std::cout << "打印浮点数:" << d; }
```
这里,`print()`可以接受int或double类型的参数,根据传入的实际参数类型确定调用哪个版本。
2. **函数隐藏(Function Hiding)**:
当一个派生类有与基类同名的函数,并且函数签名不同(即不是对基类的重载),则该派生类的函数会覆盖基类的函数,这个过程称为隐藏。例如:
```cpp
class Base {
public:
void hide(int x) { std::cout << "Base hide:" << x; }
};
class Derived : public Base {
public:
void hide(double y) override { std::cout << "Derived hide:" << y; } // 覆盖基类的hide函数
};
```
Derived类的`hide(double)`会隐藏Base类的`hide(int)`。
3. **方法重写(Method Overriding)**:
如果在派生类中重新定义了从基类继承来的虚函数,这就是重写。如上面的Derived类中的`void hide(double)`就是一个重写实例。当我们通过基类指针或引用调用这个函数时,会调用的是派生类的具体实现,实现了动态绑定。
阅读全文