21xrx.com
2025-04-28 03:39:36 Monday
文章检索 我的文章 写文章
C++如何实现多态
2023-07-06 19:39:35 深夜i     16     0
C++ 实现 多态

C++是一门面向对象的编程语言,它支持多态,让程序员可以使用多种不同的方法来处理相同类型的对象。在C++中,多态性是通过虚函数的使用来实现的。

虚函数是在基类中声明的一种特殊的函数,它可以在派生类中被重写。在C++中,基类的指针可以指向任何派生类的对象,通过调用虚函数,程序可以动态地绑定调用哪个函数。

下面是一个简单的例子,展示了如何使用虚函数来实现多态性:

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类,其中包含了一个虚函数area()。然后,创建了两个派生类,Rectangle和Triangle类,它们都继承自Shape类,并实现了它们自己的area()函数。

在主函数中,首先创建一个Shape类型的指针,然后分别将Rectangle对象和Triangle对象的地址赋值给它。通过调用指针的area()函数,程序会根据指针所指向的实际对象的类型来动态绑定调用哪个函数。这就是多态性的体现。

总之,在C++中,通过使用虚函数来实现多态性是一种非常重要的技术,它可以让程序更灵活地处理对象,并且让代码具有更好的可维护性和扩展性。

  
  

评论区

请求出错了