您的位置:首页 > 其它

类的成员函数重载、覆盖、隐藏、多态(持续更新....)

2018-03-19 13:33 267 查看
类的成员函数重载、覆盖、隐藏、多态:

概念区分:
1. 重载 必须在 同一个作用域内; 同一个类中,函数名相同,函数参数不同(类型不同 或 个数不同 或 顺序不同),构成重载成员函数。注意:不能根据函数的返回值类型来区分重载函数,因为可能会引起函数二义性(函数有忽略其返回值的情况,在这种情况下,编译器不知道调用哪个函数,从而会导致函数二义性问题)
2. 覆盖 出现在基类和派生类之间,不在同一个类作用域,函数名相同,参数也相同(个数,类型,顺序都相同),并且 基类函数为虚函数(即 函数前有 virtual),则派生类成员函数覆盖基类同名成员函数。覆盖即多态。
3. 隐藏 在基类和派生类中除了覆盖,其余情况就属于隐藏。
    情况一:基类和派生类,同函数名,同参数个数、类型、顺序,但基类不是虚函数。此时,派生类成员函数隐藏基类同名成员函数。
    情况二:基类和派生类,同函数名,函数参数不同,此时,派生类成员函数隐藏基类同名成员函数。
4. 总结: ① 同一个类中,同函数名,不同参数,为函数重载; (virtual关键字可有可无)
              ② 不同类中,同函数名,同参数,且基类为虚函数,为函数覆盖,即多态;

              ③ 不同类中,同函数名,不管参数是否相同,且不是虚函数,为函数隐藏;

5. 具体各类情况举例说明,详见 隐藏、覆盖、重载举例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: