函数重写、重载与隐藏的区别
时间: 2023-09-23 21:06:13 浏览: 95
java 函数的重载和重写实例代码
函数重写(override)、重载(overload)和隐藏(hide)都是 C++ 中的函数特性,它们的区别如下:
1. 函数重写:发生在基类和派生类之间,指的是派生类重新定义了基类中的虚函数,使得基类指针或引用在运行时调用派生类中的函数。重写的函数必须和基类函数具有相同的名称、参数列表和返回类型。重写使用 `virtual` 关键字声明。
2. 函数重载:指的是在同一个作用域内,根据函数参数的个数、类型或者顺序的不同,定义多个同名但不同参数的函数。编译器根据调用时的参数类型和数量,来选择正确的函数进行调用。
3. 函数隐藏:指的是在派生类中定义了与基类同名但不同参数的函数,使得基类函数在派生类中被隐藏。这种情况下,基类指针或引用在编译时就已经决定了调用哪个函数,无法动态绑定。如果需要实现动态绑定,则需要使用 `using` 声明基类函数,使得它在派生类中重新变为可见并进行重写。
总之,重写是动态多态性的一种体现,重载和隐藏是静态多态性的一种体现。
阅读全文