21xrx.com
2024-12-23 00:19:24 Monday
登录
文章检索 我的文章 写文章
C++多态例子:实现基类与派生类之间多种表现形式的实现方法
2023-06-27 00:11:02 深夜i     --     --
C++ 多态 基类 派生类 表现形式

C++多态是一个非常有用的编程方法,它允许开发人员使用基类和派生类之间多种表现形式。多态是指一种对象可以有多种类型,例如一个狗可以是动物和宠物,这样就可以使用一个动物对象或者一个宠物对象来处理狗对象。

在C++中实现多态,需要使用虚函数。虚函数是在基类中声明的一个函数,他们的派生类中可以重新定义它们的实现,这使得它们能够在基类中使用,同时在派生类中使用不同的实现。

下面是一个例子,它展示了如何使用C++多态来实现基类和派生类之间的多种表现形式。在这个例子中,我们有一个基类Shape(形状),它有两个派生类Circle(圆形)和Rectangle(矩形)。我们将使用多态来定义Shape的表现形式,可以是Circle也可以是Rectangle。

首先,定义基类Shape


class Shape{

public:

virtual float area() const = 0;

};

在这个基类中包含了一个纯虚函数area(),它返回一个浮点值。这样,派生类必须实现这个函数。

定义派生类Circle


class Circle: public Shape{

public:

Circle(float r): radius(r){}

float area() const{ return PI*radius*radius; }

private:

float radius;

};

Circle继承自Shape,它包含了一个私有成员变量radius(半径),并实现了基类中的纯虚函数area()。在这个实现中,使用的是圆形的面积公式。

定义派生类Rectangle


class Rectangle: public Shape{

public:

Rectangle(float w, float h): width(w), height(h){}

float area() const{ return width*height; }

private:

float width, height;

};

Rectangle也继承自Shape,它包含了私有成员变量width(宽度)和height(高度),并实现了基类中的纯虚函数area()。在这个实现中,使用的是矩形的面积公式。

最后,在主函数中使用多态来定义Shape的表现形式,包括Circle和Rectangle。


int main(){

Shape* shapes[2];

shapes[0] = new Circle(5);

shapes[1] = new Rectangle(3,4);

cout << "Area of circle = " << shapes[0]->area() << endl;

cout << "Area of rectangle = " << shapes[1]->area() << endl;

delete shapes[0];

delete shapes[1];

return 0;

}

在这个主函数中,我们使用指向Shape类型对象的数组,包括Circle和Rectangle类型的对象。然后通过多态来调用这些对象的area()函数,输出它们各自的面积。

这样,我们就使用C++多态来实现基类和派生类之间多种表现形式的实现方法。这使得我们可以编写更灵活的代码,在某些情况下,一个基类对象可以使用多种派生类对象的表现形式来实现。同时,也使得代码更易于理解和维护。

  
  

评论区

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