java中只有重载和覆盖,由于c++有virtual关键字,于是就多了个隐藏。
重载的特征:同一个作用域中(比如在同一个类),函数名相同,参数不同,virtual可有可无。
覆盖的特征:在两个类(基类和派生类),函数名和参数都相同,且必须有virtual关键字。
隐藏的特征:基类函数名和派生类函数名相同参数不同,且不管是否有关键字。或函数名、参数均相同,但基类函数没有virtual(有的话就是覆盖)不能覆盖而只能隐藏基类非虚函数。
参考:《高质量C++编程指南》
java中只有重载和覆盖,由于c++有virtual关键字,于是就多了个隐藏。
重载的特征:同一个作用域中(比如在同一个类),函数名相同,参数不同,virtual可有可无。
覆盖的特征:在两个类(基类和派生类),函数名和参数都相同,且必须有virtual关键字。
隐藏的特征:基类函数名和派生类函数名相同参数不同,且不管是否有关键字。或函数名、参数均相同,但基类函数没有virtual(有的话就是覆盖)不能覆盖而只能隐藏基类非虚函数。
参考:《高质量C++编程指南》