重载:
- 在同一个作用域。
- 要求函数名相同,参数个数和参数类型不同,返回值可以相同
隐藏:
- 作用域不同,一个在父类,一个在子类
- 只要求函数名相同,参数和返回值可同可不同
- 在派生类中只要不是重写就是隐藏
如果要用子类对象访问父类隐藏的函数必须加访问限定符
覆盖(重写):
- 作用域不同,一个在子类一个在父类
- 基类的函数必须加virtual关键字
- 函数名相同,参数列表相同,返回值也相同(协变除外)
其实覆盖就是所谓的多态的实现,即“一个接口,多种实现”,父类的虚函数在子类被重新定义,子类对象的虚函数表将父类的虚函数地址覆盖,这样可以实现运行时确定到底执行哪个 函数,就是所谓的动态绑定。
678

被折叠的 条评论
为什么被折叠?



