C++中重载、覆盖和隐藏的区别

1、重载是指在同一个类中函数名相同,但参数类型或参数个数不同。对于只有返回值类型不同,大部分编译器不支持。同时,重载函数中切记默认参数的使用,如:int input();与int input(int num=0);在使用input()函数时,编译器不知道调用哪一个函数,而在编译时产生错误。
 重载可用vitrual关键字修饰,也可不用。
2、覆盖是指在基类与其派生类之间,函数的声明一致(参数与返回值类型,以及参数个数),同时基类函数用vitual关键字修饰。
3、隐藏是指在基类与其派生类之间,若派生类的函数与基类的函数同名,返回值和参数类型个数也一致,而基类中该函数并未用virtual关键字修饰,此时基类的函数将被隐藏。若基类的函数已用或未用virtual关键字修饰,只要派生类中存在与其同名函数,在返回值或参数类型或个数上不同,基类的函数将被隐藏。

你可能感兴趣的:(C++中重载、覆盖和隐藏的区别)