第六章
2015-06-23 18:52
274 查看
1. #include <iostream.h> class Point {public: Point(float x=0,float y=0); void setPoint(float,float); float getX() const {return x;} float getY() const {return y;} friend ostream & operator<<(ostream &output,Point &); protected: float x,y; }; Point::Point(float a,float b) { x=a;y=b; } void Point::setPoint(float a,float b) { x=a;y=b; } ostream & operator<<(ostream &output,Point &p) { output<<"["<<p.x<<","<<p.y<<"]"<<endl; return output; } class Circle:public Point { public: Circle(float x,float y,float r):Point(x,y),radius(r){} void setRadius(float r) {radius=r;} float getRadius() const {return radius;} double area() const { return 3.1415*radius*radius; } friend ostream & operator<<(ostream &output,Circle &); protected: float radius; }; ostream & operator<<(ostream &output,Circle &c) { output<<"Center =["<<c.x<<","<<c.y<<"],r= "<<c.radius<<",area="<<c.area()<<endl; return output; } class Cylinder:public Circle { public: Cylinder(float x,float y,float r,float h):Circle(x,y,r),height(h){} void setHeight(float h) {height=h;} float getHeight() const {return height;} double area() const { return 2*Circle::area()+2*3.1415*radius*height; } double volume() const { return 3.1415*radius*radius*height; } friend ostream & operator<<(ostream &output,Cylinder &); protected: float height; }; ostream & operator<<(ostream &output,Cylinder &cy) { output<<"Center=["<<cy.x<<cy.y<<"],r="<<cy.radius<<",h="<<cy.height<<"\narea="<<cy.area()<<",volume="<<cy.volume()<<endl; return output; } int main() { Cylinder cy1(3.5,6.4,5.2,10); cout<<"original cylinder:\nx="<<cy1.getX()<<",y="<<cy1.getY()<<",r="<<cy1.getRadius()<<",h="<<cy1.getHeight()<<"\narea="<<cy1.area()<<",volume="<<cy1.volume()<<endl; cy1.setHeight(15); cy1.setRadius(7.5); cy1.setPoint(5,5); cout<<"\nnew cylinder:\n"<<cy1; Point &pRef=cy1; cout<<"\npRef as a point:"<<pRef; Circle &cRef=cy1; cout<<"\ncRef as a circle:"<<cRef; return 0; } 3.(1) #include <iostream> using namespace std; class Point { public: Point(float a,float b):x(a),y(b){} ~Point(){cout<<"executing Point destructor"<<endl;} private: float x; float y; }; class Circle:public Point { public: Circle(float a,float b,float r):Point(a,b),radius(r){} ~Circle(){cout<<"executing Circle destructor"<<endl;} private: float radius; }; int main() { Point *p=new Circle(1,2,3); delete p; return 0; } (2)#include <iostream> using namespace std; class Point { public: Point(float a,float b):x(a),y(b){} ~Point(){cout<<"executing Point destructor"<<endl;} private: float x; float y; }; class Circle:public Point { public: Circle(float a,float b,float r):Point(a,b),radius(r){} ~Circle(){cout<<"executing Circle destructor"<<endl;} private: float radius; }; int main() { Point *p=new Circle(1,2,3); Circle *r=new Circle(1,2,3); delete r; return 0; } (3) #include <iostream> using namespace std; class Point { public: Point(float a,float b):x(a),y(b){} virtual ~Point(){cout<<"executing Point destructor"<<endl;} private: float x; float y; }; class Circle:public Point { public: Circle(float a,float b,float r):Point(a,b),radius(r){} ~Circle(){cout<<"executing Circle destructor"<<endl;} private: float radius; }; int main() { Point *p=new Circle(1,2,3); delete p; return 0; } 4. #include <iostream.h> class Shape{ public: virtual double area()const =0; }; class Circle:public Shape { public: Circle(double r):radius(r){} virtual double area() const { return 3.1415*radius*radius; } protected: double radius; }; class Rectangle :public Shape{ public: Rectangle(double l,double w):length(l),width(w){} virtual double area()const { return length*width; } protected: double length; double width; }; class Triangle:public Shape { public: Triangle(double d,double h):dibian(d),height(h){} virtual double area() const { return 0.5*dibian*height; } protected: double dibian; double height; }; void display(const Shape &s) { cout<<s.area()<<endl; } int main() { Circle c(4); cout<<"area of c is "; display(c); Rectangle r(2,4); cout<<"area of r is "; display(r); Triangle t(1,2); cout<<"area of t is "; display(t); return 0; } 5. #include <iostream.h> class Shape{ public: virtual double area()const =0; }; class Circle:public Shape { public: Circle(double r):radius(r){} virtual double area() const { return 3.1415*radius*radius; } protected: double radius; }; class Rectangle :public Shape{ public: Rectangle(double l,double w):length(l),width(w){} virtual double area()const { return length*width; } protected: double length; double width; }; class Triangle:public Shape { public: Triangle(double d,double h):dibian(d),height(h){} virtual double area() const { return 0.5*dibian*height; } protected: double dibian; double height; }; class Square:public Shape{ public: Square(double s):side(s){} virtual double area() const { return side*side; } protected: double side; }; class Trapezoid:public Shape { public: Trapezoid(double t,double b,double h):top(t),bottem(b),height(h){} virtual double area() const { return 0.5*(top+bottem)*height; } protected: double top,bottem,height; }; void display(const Shape &s) { cout<<s.area()<<endl; } int main() { Circle c(4); Rectangle r(2,4); Triangle t(1,2); Square s(2); Trapezoid tt(1,2,3); Shape *p[5]={&c,&r,&t,&s,&tt}; double area=0.0; for(int i=0;i<5;i++) { area=area+p[i]->area(); } cout<<"the sum of area is "<<area<<endl; return 0; }
相关文章推荐
- 第五章
- hdu 5215 Cycle
- javascript工具--控制台详解(转自 阮一峰博客)
- ie6/7对display:inline-block的不支持
- iOS 打包32bit&64 universal-framework
- DateTime
- Mysql权限设置
- 【线段树】 HDOJ 5274 Dylans loves tree
- 第四章
- 【ContestHunter】【弱省胡策】【Round8】
- android 返回本机安装的所有第三方应用
- 串行化(序列化) 使用CArchive进行读写
- Objective-C与C++的区别
- Android学习第四课:Java代码动态创建View及LayoutParams类(二)
- select加载数据和数据选中
- xargs
- 我的大学六年(单片机大师郭天祥原创)
- 使用HttpSessionListener接口监听Session的创建和失效
- /mnt/asec /mnt/secure文件夹分区
- 约瑟夫环的数学推导、数学方法求最后出圈的数字、循环单链表求所有出圈数字顺序