C++函数覆盖,重载,隐藏的区别
2016-08-16 13:25
531 查看
c++中函数的覆盖,重载和隐藏之间的关系是很令人头疼的,又是不太容易区分的,现在此总结一下。
范围的不同:函数的重载发生在类内部,而函数的覆盖,也叫函数重写,及函数隐藏发生在类间。也就是说,在同一个类中只会发生函数的重载,而在子类与父类间会发生覆盖和隐藏。
声明方式的不同:在同一个类中,如果声明多个函数,只要它们的函数名相同,就会发生重载,而不管它们的参数列表及参数个数是否相同;当子类中存在与父类同名的函数,它们的参数列表个数,参数类型,返回值类型相同并且有virtual关键字修饰就会发生函数覆盖;当子类与父类有同名函数,但参数个数或参数类型不同,此时无论有无virtual关键字修饰均会发生函数隐藏。
最后在说一点,函数重载是实现多态的基础。
范围的不同:函数的重载发生在类内部,而函数的覆盖,也叫函数重写,及函数隐藏发生在类间。也就是说,在同一个类中只会发生函数的重载,而在子类与父类间会发生覆盖和隐藏。
声明方式的不同:在同一个类中,如果声明多个函数,只要它们的函数名相同,就会发生重载,而不管它们的参数列表及参数个数是否相同;当子类中存在与父类同名的函数,它们的参数列表个数,参数类型,返回值类型相同并且有virtual关键字修饰就会发生函数覆盖;当子类与父类有同名函数,但参数个数或参数类型不同,此时无论有无virtual关键字修饰均会发生函数隐藏。
最后在说一点,函数重载是实现多态的基础。
相关文章推荐
- c++成员函数的重载、覆盖、隐藏区别
- c++成员函数的重载、覆盖、隐藏区别
- C++中函数覆盖 隐藏 重载区别
- c++中多态函数以及函数重载,覆盖,遮蔽(隐藏)的区别
- C++学习笔记-----继承体系中函数的重载,覆盖和隐藏的区别
- c++中多态函数以及函数重载,覆盖,遮蔽(隐藏)的区别
- c++成员函数的重载、覆盖、隐藏区别
- c++成员函数的重载、覆盖、隐藏区别
- C++成员函数重载、覆盖和隐藏的区别
- C/C++日常学习总结(第六篇)多基派生引起的虚函数访问二义性问题&重载,覆盖,隐藏的区别
- c++成员函数的重载、覆盖、隐藏区别
- C++中成员函数的重载,覆盖和隐藏的区别
- C++:类成员函数的重载、覆盖和隐藏区别?
- c++成员函数的重载、覆盖、隐藏区别
- C++中虚函数、纯虚函数、抽象类、重载、覆盖、隐藏的区别与联系
- C++成员函数重载、覆盖和隐藏的区别
- c++成员函数的重载、覆盖、隐藏区别
- C++成员函数重载、覆盖和隐藏的区别
- C++函数的重载、覆盖和隐藏区别
- c++成员函数的重载、覆盖、隐藏区别