热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

形状类族中纯虚函数的应用与解析

本文探讨了在形状类族中应用纯虚函数的设计模式及其解析方法。通过定义一个基类`Shape`,其中包含一个纯虚函数`area()`,实现了多态性和代码的灵活性。该设计使得派生类能够根据具体的形状计算面积,从而提高了代码的可扩展性和复用性。示例代码展示了如何利用纯虚函数实现这一机制。

问题及代码:

#include 
using namespace std;

class Shape
{
public:
virtual double area()=0;
};

class Circle:public Shape
{
public:
Circle(double R):r(R){};
double area();
protected:
double r;
};

class Rectangle:public Shape
{
public:
Rectangle(double l,double w):length(l),width(w){};
double area();
protected:
double length,width;
};

class Triangle :public Shape
{
public:
Triangle(double s,double h):side(s),hight(h){};
double area();
protected:
double side,hight;
};
double Circle::area()
{
return 3.14159*r*r;
}

double Rectangle::area()
{
return length*width;
}

double Triangle::area()
{
return 0.5*side*hight;
}

int main()
{
Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,参数为圆半径
Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,参数为矩形长、宽
Triangle t1(4.5,8.4),t2(3.4,2.8); //建立Triangle类对象t1,t2,参数为三角形底边长与高
Shape *pt[6]= {&c1,&c2,&r1,&r2,&t1,&t2}; //定义基类指针数组pt,使它每一个元素指向一个派生类对象
double areas=0.0; //areas为总面积
for(int i=0; i<6; i++)
{
areas=areas + pt[i]->area();
}
cout<<"totol of all areas="< return 0;
}


 

运行结果:

学习小结:

看了一下,这周才三个项目啊。

刚好链表不会,可以补补了。

这个写完了,拿计算器测试了一下,差不多。毕竟有精度差别

写下一个了!

加油


推荐阅读
author-avatar
薇薇MM81_811
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有