C++ 多态性示例:派生类重写基类函数

本示例展示了 C++ 中派生类重写基类函数以实现多态性的概念。通过代码演示,您可以直观地理解动态多态性是如何工作的。

代码示例:

#include <iostream>
using namespace std;

class Base {
  int a, b;
public:
  Base(int x, int y) { a = x; b = y; }
  void show() {
    cout << '	' << "a=" << a << '	' << "b=" << b;
  }
};

class Derived : public Base {
  int c;
public:
  Derived(int x, int y, int z) : Base(x, y) { c = z; }
  void show() {
    Base::show();
    cout << '	' << "c=" << c;
  }
};

int  main() {
  Base mb(50, 50), *mp;
  Derived md(10, 20, 30);
  mp = &mb; mp->show();
  cout << endl;
  mp = &md;
  mp->show();
  cout << endl;
  ((Derived*)mp)->show(); cout << endl;
  return 1;
}

解释:

  1. 当执行 mp=&md; mp->show(); 时,调用的是 Derived 派生类的 show() 函数。这是因为虽然 mp 指针指向 Base 类,但实际存储的是 Derived 对象,而 show() 函数在 Derived 类中被重写了。

  2. 函数 show() 称为 虚函数,实现了 动态多态性。动态多态性是指在运行时根据对象的实际类型来调用相应的方法,即使 mp 指向 Base 类,但由于实际对象是 Derived,因此调用了 Derived 类中的 show() 函数。

结论:

本示例展示了 C++ 中派生类重写基类函数以实现多态性的概念,以及动态多态性是如何在运行时根据对象的实际类型来选择方法调用的。


原文地址: https://www.cveoy.top/t/topic/n0zv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录