收藏 分销(赏)

谭浩强《C--面向对象程序设计》第六章答案.docx

上传人:仙人****88 文档编号:9282694 上传时间:2025-03-19 格式:DOCX 页数:8 大小:16.31KB
下载 相关 举报
谭浩强《C--面向对象程序设计》第六章答案.docx_第1页
第1页 / 共8页
谭浩强《C--面向对象程序设计》第六章答案.docx_第2页
第2页 / 共8页
点击查看更多>>
资源描述
第六章 1: //xt6-1/cpp #include <iostream> //如用VC++应改为∶#include <iosttram.h> using namespace std; //如用VC++应取消此行 #include "cylinder.h" #include "point.cpp" #include "circle.cpp" #include "cylinder.cpp" int main() {Cylinder cy1(3.5,6.4,5.2,10); cout<<"\noriginal 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:解法一 #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(2.5,1.8,4.5); delete p; return 0; } 3:解法二 #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(int a,int b,int r):Point(a,b),radius(r){} ~Circle(){cout<<"executing Circle destructor"<<endl;} private: float radius; }; int main() {Point *p=new Circle(2.5,1.8,4.5); Circle *pt=new Circle(2.5,1.8,4.5); delete pt; 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){} virtual ~Circle(){cout<<"executing Circle destructor"<<endl;} private: float radius; }; void main() {Point *p=new Circle(2.5,1.8,4.5); delete p; } 4: #include <iostream> using namespace std; //定义抽象基类Shape class 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; //宽与高 }; //输出面积的函数 void printArea(const Shape &s) {cout<<s.area()<<endl;} //输出s的面积 int main() { Circle circle(12.6); //建立Circle类对象circle cout<<"area of circle ="; printArea(circle); //输出circle的面积 Rectangle rectangle(4.5,8.4); //建立Rectangle类对象rectangle cout<<"area of rectangle ="; printArea(rectangle); //输出rectangle的面积 Triangle triangle(4.5,8.4); //建立Triangle类对象 cout<<"area of triangle ="; printArea(triangle); //输出triangle的面积 return 0; } 5: #include <iostream> using namespace std; //定义抽象基类Shape class 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; //半径 }; //定义Square(正方形)类 class Square:public Shape {public: Square(double s):side(s){} //结构函数 virtual double area() const {return side*side;} //定义虚函数 protected: double side; }; //定义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; //宽与高 }; //定义Trapezoid(梯形)类 class Trapezoid:public Shape {public: Trapezoid(double t,double b,double h):top(t),bottom(t),height(h){} //结构函数 virtual double area() const {return 0.5*(top+bottom)*height;} //定义虚函数 protected: double top,bottom,height; //上底、下底与高 }; //定义Triangle(三角形)类 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 circle(12.6); //建立Circle类对象circle Square square(3.5); //建立Square类对象square Rectangle rectangle(4.5,8.4); //建立Rectangle类对象rectangle Trapezoid trapezoid(2.0,4.5,3.2); //建立Trapezoid类对象trapezoid Triangle triangle(4.5,8.4); //建立Triangle类对象 Shape *pt[5]={&circle,&square,&rectangle,&trapezoid,&triangle}; //定义基类指针数组pt,使它每一个元素指向一个派生类对象 double areas=0.0; //areas为总面积 for(int i=0;i<5;i++) {areas=areas+pt[i]->area();} cout<<"totol of all areas="<<areas<<endl; //输出总面积 return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服