21xrx.com
2024-11-05 18:45:41 Tuesday
登录
文章检索 我的文章 写文章
C++如何实现多态
2023-07-06 19:39:35 深夜i     --     --
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++中,通过使用虚函数来实现多态性是一种非常重要的技术,它可以让程序更灵活地处理对象,并且让代码具有更好的可维护性和扩展性。

  
  

评论区

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