#include<iostream>//不正确代码。。using namespace std;const double PI=3.1415926;class shape{public:virtual double getArea(){return -1;}virtual double getPerimeter(){return -1;}};class circle:public shape{double radius;public:circle(double r=0){radius=r;}double getArea(){return PI*radius*radius;}double getPerimeter(){return 2*PI*radius;}};class rectangle:public shape{double length;double width;public:rectangle(double le=0,double wi=0){length=le;width=wi;}double getArea(){return length*width;}double getPerimeter(){return 2*width+2*length;}};class square:public rectangle{double sqlength;public:square(double sq){sqlength=sq;}double getArea(){return sqlength*sqlength;}double getPerimeter(){return 4*sqlength;}};void fun(shape* p,double *a,double *per){*a=p->getArea();*per=p->getPerimeter();}int main(){double area,perimeter;shape*pp;circle r(5);pp=&r;fun(pp,&area,&perimeter);cout<<area<<endl;cout<<perimeter<<endl;rectangle b(5,6);pp=&b;fun(pp,&area,&perimeter);cout<<area<<endl;cout<<perimeter<<endl;square c(20);pp=&c;fun(pp,&area,&perimeter);cout<<area<<endl;cout<<perimeter<<endl;}
#include <iostream>//转自http://blog.csdn.net/sxhelijian/article/details/7566500using namespace std;//定义抽象基类Shapeclass Shape{public:virtual double area() const =0; //纯虚函数};//定义Circle类class Circle:public Shape{public:Circle(double r):radius(r){} //结构函数virtual double area() const {return 3.14159*radius*radius;}; //定义虚函数protected:double radius; //半径};//定义Rectangle类class Rectangle:public Shape{public:Rectangle(double w,double h):width(w),height(h){} //结构函数virtual double area() const {return width*height;} //定义虚函数protected:double width,height; //宽与高};class Triangle:public Shape{public:Triangle(double w,double h):width(w),height(h){} //结构函数virtual double area() const {return 0.5*width*height;} //定义虚函数protected:double width,height; //宽与高};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="<<areas<<endl; //输出总面积system("pause");return 0;}
#include<iostream>//比较正确的写法?using namespace std;const double PI=3.1415926;class sharp{public:virtual double getArea()=0;virtual double getPerimeter()=0;};class circle:public sharp{double radius;public:circle(double r=0){radius=r;}double getArea(){return PI*radius*radius;}double getPerimeter(){return 2*PI*radius;}};class rectangle:public sharp{double length;double width;public:rectangle(double le=0,double wi=0){length=le;width=wi;}double getArea(){return length*width;}double getPerimeter(){return 2*width+2*length;}};class square:public rectangle{//double sqlength;public:square(double sq):rectangle(sq,sq){//sqlength=sq;}//double getArea()//{//return sqlength*sqlength;//}//double getPerimeter()//{//return 4*sqlength;//}};void fun(sharp* p,double *a,double *per){*a=p->getArea();*per=p->getPerimeter();}int main(){double area,perimeter;sharp *pp;circle r(5);pp=&r;fun(pp,&area,&perimeter);cout<<area<<endl;cout<<perimeter<<endl;rectangle b(5,6);pp=&b;fun(pp,&area,&perimeter);cout<<area<<endl;cout<<perimeter<<endl;square c(20);pp=&c;fun(pp,&area,&perimeter);cout<<area<<endl;cout<<perimeter<<endl;//计算圆、矩形、正方形总面积 double totalarea=0;sharp* pt[3]={&r,&b,&c};for(int i=0;i<3;i++){totalarea=totalarea+pt[i]->getArea();}cout<<totalarea<<endl;}
- shape派生circle,rectangle,square
- 类的继承与派生(Shape例子派生Rectangle和Circle,Rectangle派生出Square)
- 计算形状Shape(圆Circle,矩形Square ,正方形Rectangle)的面积、周长
- 第13周-任务3-抽象基类Shape及派生类Circle、Rectangle和Triangle
- 抽象基类Shape及派生类Circle、Rectangle和Triangle的实现
- 十三周(三)定义抽象类shape,由它派生出三个派生类Circle,Rectangle,Triangle
- 定义抽象基类Shape,由它派生出3个派生类,Circle、Rectangle、Triangle
- 第十四周 项目二:定义抽象类Shape,由此派生出Circle(圆形)、Rectangle(矩形)、Triangle(三角形)
- 第十三周任务三(义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形))
- 第13周任务3(定义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形))
- C++第十三周【任务3】定义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形)
- 写一个程序,定义抽象基类Shape,由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)、Triangle(三角形)
- 5.1(接口)1)定义shape接口,包含求面积和求周长的方法;2)定义Circle类、Rectangle类、Square类;
- 用c++建立一个形状类Shape作为基类,派生出圆类Circle和矩形类Rectangle,求出面积并获取相关信息。
- 建立一个形状类Shape作为基类,派生出圆类Circle和矩形类Rectangle,求出面积并获取相关信息。具体要求如下:
- 定义一个Shape抽象类,在此基础上派生出Rectangle和Circle,二者都有GetArea()函数计算对象的面积,GetPerim()函数计算对象的周长
- 6.根据主类,设计类Shape, Rectangle和Circle。
- 第13周实验--任务3--定义抽象基类Shape,由它派生出3个派生类,Circle、Rectangle、Triangle。求出定义的3个几何体的面和。
- 项目3抽象类与纯虚函数
- Union和Union All的区别
- C# ListBox 自动滚动到底部
- mysql checkpoint理解
- 图像处理网络资源【转】
- shape派生circle,rectangle,square
- debian系统udisks移动硬盘或者U盘时,出现one or more partitions are busy on /dev/sdb
- C++的反射。。(转载,很old的话题了),觉得写得很好
- 关于file_operations结构体
- JBPM3与JBPM4
- OpenCV Demo watershed
- 你愿意做哪一种狐狸
- cocos2d-x 菜鸟学习笔记十三(简单的碰撞检测)
- HDOJ 4549 - M斐波那契数列 费马小定理,矩阵乘法