函数的覆盖

来源:互联网 发布:网络摄像机 编辑:程序博客网 时间:2024/04/30 03:06

     在基类 animal 的 breathe 函数前添加了 virtual 关键字, 声明该函数为虚函数。 

我们注意到, 类的 breathe 函数和 animal fish 在派生类 fish 中重写了 breathe 函

数, 的 breathe 函数完全一样,无论函数名,还是参数列表都是一样的,这称为

函 数的覆盖(override) 。


 构成函数覆盖的条件为:

  1.  基类函数必须是虚函数(使用 virtual 关键字进行声明) 。
  2.  发生覆盖的两个函数要分别位于派生类和基类中。
  3. 函数名称与参数列表必须完全相同。 

由于 C++的多态性是通过虚函数来实现的, 所以函数的覆盖总是和多态关联 在一起。在函数覆盖的情况下,编译器会在运行时根据对象的实际类型来确定要 调用的函数。