21xrx.com
2024-11-08 22:13:30 Friday
登录
文章检索 我的文章 写文章
C++多态示例
2023-07-03 12:37:56 深夜i     --     --
C++ 多态 示例 继承 虚函数

C++是一种广泛使用的编程语言,它支持许多特性和技术,其中一个重要的特性就是多态。多态是面向对象编程中的一个概念,它能够让不同类的对象对同一个消息做出不同的反应。在这篇文章中,我们将探讨C++多态的示例。

多态的实现需要使用虚函数机制。虚函数是一种特殊的成员函数,它在类中声明为虚函数,从而使得派生类可以覆盖它。当调用一个虚函数时,编译器会根据对象类型动态地确定具体要调用的函数。多态的关键在于,通过基类指针或引用调用虚函数时,可以将其指向派生类的对象,从而实现调用不同的函数。

下面是一个简单的示例,说明如何使用多态来实现一个简单的图形绘制程序。假设我们有一个基类Shape和两个派生类Circle和Rectangle,它们都拥有自己的绘制函数Draw。


//Shape.h

class Shape

{

public:

  virtual void Draw();

};

//Circle.h

class Circle : public Shape

{

public:

  void Draw();

};

//Rectangle.h

class Rectangle : public Shape

{

public:

  void Draw();

};

在这个示例中,我们定义了一个虚函数Draw,并在每个派生类中进行了覆盖。接下来,我们定义一个函数DrawShapes,它接受一个Shape类型的数组,并依次调用Draw函数。


//DrawShapes.h

void DrawShapes(Shape** shapes, int n)

{

  for (int i = 0; i < n; i++)

  {

    shapes[i]->Draw();

  }

}

现在我们可以创建一个Shape类型的数组,并将不同的派生类对象存放在其中。然后,将该数组作为参数传递给DrawShapes函数,程序将自动根据对象类型调用不同的Draw函数。


//main.cpp

int main()

{

  Shape* shapes[2];

  shapes[0] = new Circle();

  shapes[1] = new Rectangle();

  DrawShapes(shapes, 2);

  return 0;

}

在上面的示例中,我们创建了一个包含一个Circle对象和一个Rectangle对象的数组。当程序运行时,将依次调用每个对象的Draw函数,从而绘制不同的图形。

总之,多态是C++中一个强大的特性,可以帮助我们方便地实现各种功能,包括图形绘制程序、动态链接库等。熟练掌握多态的使用可以使C++代码更加灵活和高效。

  
  

评论区

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