21xrx.com
2024-12-23 00:41:37 Monday
登录
文章检索 我的文章 写文章
C++中实现动态多态性的方法是什么?
2023-06-24 08:48:36 深夜i     --     --
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)基类的虚函数,并在程序运行时根据实际类型调用相应的函数,从而可以实现动态多态性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复