21xrx.com
2025-03-22 05:29:10 Saturday
文章检索 我的文章 写文章
C++中实现动态多态性的方法是什么?
2023-06-24 08:48:36 深夜i     12     0
C++ 动态多态性 实现方法

C++是一种常用的面向对象编程语言,其中的多态性是实现面向对象编程的核心概念之一。动态多态性是其中的一种实现方式,它可以让程序在运行时根据实际类型做出不同的反应。

动态多态性的实现方式是通过运用虚函数(virtual functions)来实现的。虚函数是在基类中声明的函数,其声明格式为virtual ReturnType FunctionName() const = 0;,其中const是可选项,而=0表示该虚函数是纯虚函数。虚函数的实现在派生类中进行,使用override关键字表明覆盖了基类中的虚函数。

当派生类调用基类中的虚函数时,C++编译器通过虚函数表(virtual function table)在运行时确定该函数的实际实现。这允许派生类覆盖基类中的虚函数,从而可以在程序运行时根据实际类型调用相应的函数,实现动态多态性。具体实现如下:

class Base
{
public:
  virtual void print() const
  
    std::cout << "I am Base" << std::endl;
  
};
class Derived : public Base
{
public:
  void print() const override
  
    std::cout << "I am Derived" << std::endl;
  
};
int main()
{
  Base* b = new Base();
  Derived* d = new Derived();
  b->print(); // 输出 "I am Base"
  d->print(); // 输出 "I am Derived"
  Base* bd = new Derived();
  bd->print(); // 输出 "I am Derived"
  delete b;
  delete d;
  delete bd;
  return 0;
}

在上述代码中,我们定义了基类Base和派生类Derived,并在两个类中都定义了同名的虚函数print。在main函数中,我们分别用指向基类和派生类的指针动态地分配内存,并调用print函数。当使用派生类指针调用时,实际上调用了Derived类中的print函数;当使用基类指针调用时,由于print函数是虚函数,其行为在运行时被动态确定,因此也会调用Derived类中的print函数。

综上所述,C++中实现动态多态性的方法是通过虚函数来实现,在派生类中重写(override)基类的虚函数,并在程序运行时根据实际类型调用相应的函数,从而可以实现动态多态性。

  
  

评论区