21xrx.com
2024-11-05 12:16:24 Tuesday
登录
文章检索 我的文章 写文章
C++实现动态多态性
2023-07-05 01:06:26 深夜i     --     --
C++ 动态多态性 实现

C++语言具有许多强大的特性,其中一个特性是动态多态性。动态多态性是指在运行时根据实际类型选择函数调用的能力,使得面向对象程序能够更加灵活、可扩展和可维护。

C++中的动态多态性是通过虚函数和虚函数表来实现的。虚函数是指在基类中声明的函数,使用virtual关键字进行修饰,可以被派生类覆盖重写。虚函数表是一个存储了虚函数指针的数组,它记录了每个对象所属类的虚函数地址,通过虚函数表,程序在运行时动态地确定需要调用哪个函数。

下面我们以一个例子来展示如何使用C++实现动态多态性。我们定义一个Animal类作为基类,其中包含虚函数eat(),并定义两个派生类Dog和Cat,它们分别重写eat()函数。在main函数中,我们创建一个Animal类型的指针指向Dog和Cat对象,然后通过调用eat()函数来展示动态多态性的实现。


#include <iostream>

class Animal {

public:

  virtual void eat()

    std::cout << "Animal is eating." << std::endl;

  

};

class Dog : public Animal {

public:

  void eat()

    std::cout << "Dog is eating." << std::endl;

  

};

class Cat : public Animal {

public:

  void eat()

    std::cout << "Cat is eating." << std::endl;

  

};

int main() {

  Animal* animal1 = new Dog();

  Animal* animal2 = new Cat();

  animal1->eat();

  animal2->eat();

  return 0;

}

上述程序的输出结果为:


Dog is eating.

Cat is eating.

我们可以看到,虚函数eat()在运行时动态地确定了需要调用哪个函数,程序达到了动态多态性的目的。

总的来说,C++中的动态多态性使得程序具有更加灵活、可扩展和可维护的特性。通过虚函数和虚函数表的设计,程序在运行时可以动态地选择需要调用的函数,从而使得类的设计更加具有可重用性,提高了代码的可维护性和可靠性。

  
  

评论区

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