重载:
在同一作用域下,函数名相同,参数列表不同即构成重载
条件:
必须在同一个作用域下
函数名相同
参数列表不同:参数类型和参数个数不一样 对于指针和引用的常属性不一样也构成重载
与返回值类型无关
与是否是虚函数无关
在编译时,根据调用时传递的实参类型和个数来绑定调用的函数
覆盖:
子类重写父类同类型的虚函数
条件:
分布在父子类中
函数名相同
参数列表必须相同:参数类型和个数必须相同 函数的常属性必须相同 参数是指针和引用
与返回值类型相关 如果不是类类型指针或者类类型引用,必须完全一致,否则可以有父子关系
基类必须是虚函数 重写的版本也一定是虚函数
在运行时,根据指针所指向的目标类型或者根据引用所引用的目标类型,来决定调用哪个函数
动态绑定,在运行时决定使用哪个函数
隐藏:
子类隐藏父类同名的标识符(只讨论函数)
条件:
分布在子类中
函数名相同
如果参数不同,不管是否有virtual关键字