c++中函数的覆盖,重载和隐藏之间的关系是很令人头疼的,又是不太容易区分的,现在此总结一下。
范围的不同:函数的重载发生在类内部,而函数的覆盖,也叫函数重写,及函数隐藏发生在类间。也就是说,在同一个类中只会发生函数的重载,而在子类与父类间会发生覆盖和隐藏。
声明方式的不同:在同一个类中,如果声明多个函数,只要它们的函数名相同,就会发生重载,而不管它们的参数列表及参数个数是否相同;当子类中存在与父类同名的函数,它们的参数列表个数,参数类型,返回值类型相同并且有virtual关键字修饰就会发生函数覆盖;当子类与父类有同名函数,但参数个数或参数类型不同,此时无论有无virtual关键字修饰均会发生函数隐藏。
最后在说一点,函数重载是实现多态的基础。
转载请注明原文地址: https://ju.6miu.com/read-1309134.html