函数的覆盖和隐藏

来源:互联网 发布:vb 日期格式转string 编辑:程序博客网 时间:2024/05/16 04:49

1.函数的覆盖

在基类函数前加virtual 关键字,声明该函数为虚函数,在派生类中重写该函数,在基类与派生类中,函数完全一样,无论函数名,还是参数列表都是一样的,这称为函数的覆盖。

构成函数覆盖的条件为:

  基类函数必须是虚函数

 发生覆盖的两个函数必须分别位于基类和派生类中

函数名称与初始化列表完全相同

由于在C++中,多态性总是通过虚函数来实现的,所以函数的覆盖总是和多态性联系在一起的。

2,函数的隐藏

(1) 派生类的函数与基类的函数完全相同(函数名与参数列表都相同),只是基类的函数没有使用virtual 关键字,此时基类的函数将被隐藏,而不是被覆盖,

 (2)派生类的函数与基类的函数同名,但是参数类表不同,在这种情况下,不管基类的函数声明是否有virtual关键字,基类的函数都是隐藏的。注意这种情况与函数重载的区别,重载发生在同一个类中。