21xrx.com
2024-12-22 21:56:42 Sunday
登录
文章检索 我的文章 写文章
C++多态案例实例
2023-06-22 01:50:00 深夜i     --     --
C++语言 多态 案例实例 面向对象编程 虚函数

C++多态是面向对象编程中一种非常重要的概念,在C++中,多态通常是通过虚函数实现的。虚函数是在类的声明中声明的虚函数,在派生类中可以重新定义该函数。这样,在调用此函数时,实际上会调用派生类中的版本。

下面我们来看一个简单的例子:


#include <iostream>

using namespace std;

class Shape {

  protected:

   int width, height;

  public:

   Shape( int a = 0, int b = 0)

     width = a;

     height = b;

   

   // 面积计算函数,

   virtual int area()  

     cout << "Parent class area :" <<endl;

     return 0;

   

};

class Rectangle: public Shape {

  public:

   Rectangle( int a = 0, int b = 0):Shape(a, b) { }

   // 重载基类函数

   int area () {

     cout << "Rectangle class area :" <<endl;

     return (width * height);

   }

};

class Triangle: public Shape{

  public:

   Triangle( int a = 0, int b = 0):Shape(a, b) { }

   // 重载基类函数

   int area () {

     cout << "Triangle class area :" <<endl;

     return (width * height / 2);

   }

};

// 程序的主函数

int main( ) {

  Shape *shape;

  Rectangle rec(10,7);

  Triangle tri(10,5);

  // 存储矩形的地址

  shape = &rec;

  // 调用矩形的求面积函数 area

  shape->area();

  // 存储三角形的地址

  shape = &tri;

  // 调用三角形的求面积函数 area

  shape->area();

 

  return 0;

}

这个例子中我们定义了一个`Shape`类和两个派生类`Rectangle`和`Triangle`。`Shape`类中有一个虚函数`area()`,在派生类中重新定义了这个函数,实现了计算不同形状的面积。在`main`函数中,我们定义了一个`Shape`类型的指针`shape`,先将其指向一个`Rectangle`对象,再指向一个`Triangle`对象,调用`area()`函数时,实际上会调用指向的对象中的`area()`函数。这就是多态的实现。

这个例子虽然比较简单,但是很好地说明了多态的实现方式和作用。在实际应用中,多态可以大大增加代码的可读性和可维护性,同时也可以实现更多的功能。因此,多态在面向对象编程中是非常重要的概念,需要我们认真学习和掌握。

  
  

评论区

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