C++04737 第4章 课后练习题 完整答案.doc_第1页
C++04737 第4章 课后练习题 完整答案.doc_第2页
C++04737 第4章 课后练习题 完整答案.doc_第3页
C++04737 第4章 课后练习题 完整答案.doc_第4页
C++04737 第4章 课后练习题 完整答案.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章一、单项选择题1.数据成员 成员函数; 2.类名 析构函数不允许有返回类型和参数(可显示地说明参数为void) 一个类有1个析构函数; 3.fun:fun(fun &) 和 fun:fun(const fun &);二、单项选择题 1.C; class定义类的关键字,讲数据域函数封装起来2.C; 面向对象的特征:多态性、抽象性、封装性、继承性等3.没又答案,应该是A:A(void) 或 A:A(),参考课本P824.B: 构造函数、复制构造函数、析构函数都是类的成员函数5.C; 不能指定任何返回类型,即使是void也不可6.C; 析构函数不能有返回类型,也不能制定参数。7.D; 参考课本P79, 不能说调用new,应该说new分配了内存空间三、改错题 1.找出以下类定义中的错误,并说明错在何处?class baseint *p;/int m; 加上这个语句就正确了public:base(int a)p=&a;int Getx()return m; /错误,这里使用的m在类的数据成员中未定义 /C+类定义中要遵循“先定义后使用”的原则base()delete p; 2.找出下面程序中的错误,并说明错在何处。class Pointint x;public:void init(int a) Setx(a); int Getx() return x; int Setx(int a) x = a; /错误,Setx()只是赋值,返回值类型应为void,不是int;void main()Point A; /应该加上这句,简历对象AA.init(24,56); /错误,init函数只能有1个参数cout A.x= A.Getx() endl; 四、完成程序题 1.下面是一个类的测试程序,设计出能使用如下测试程序的类: #include using namespace std;/设计的类如下class base private: /私有数据成员int x;int y;public: /公有成员函数void init(int a, int b)x = a;y = b;void print()int r;r = 2*x - y;cout 2* x - y = r;cout endl;void main()base a;a.init(68,55);a.print();运行结果:2.完成下面类中成员函数的定义。class Pointprivate:int m, n;public:Point(int, int); /带两个参数的构造函数原型声明Point(Point&); /带一个引用参数的复制构造函数原型声明;Point : Point(int a, int b)m = a;n = b;Point : Point(Point& t)m = t.m;n = t.n;五、程序分析题 1.给出下面程序的输出结果。 #include using namespace std;class baseprivate:int a, b;public:base()cout Destory. a , b endl;base(int a, int b):b(b),a(a)cout 初始化. a , b endl;答:没有输出结果,因为只是定义了类,没有产生类对象。如果加main函数,并在main中产生一个类对象,则有输出结果void main()base a(11, 22);输出:第四章二、单项选择题 6.C; 析构函数不能有返回类型,也不能制定参数。7.D; 参考课本P79, 不能说调用new,应该说new分配了内存空间三、改错题 1.找出以下类定义中的错误,并说明错在何处?class baseint *p;/int m; 加上这个语句就正确了public:base(int a)p=&a;int Getx()return m; /错误,这里使用的m在类的数据成员中未定义 /C+类定义中要遵循“先定义后使用”的原则base()delete p; 2.找出下面程序中的错误,并说明错在何处。class Pointint x;public:void init(int a) Setx(a); int Getx() return x; int Setx(int a) x = a; /错误,Setx()只是赋值,返回值类型应为void,不是int;void main()Point A; /应该加上这句,简历对象AA.init(24,56); /错误,init函数只能有1个参数cout A.x= A.Getx() endl; 四、完成程序题 1.下面是一个类的测试程序,设计出能使用如下测试程序的类: #include using namespace std;/设计的类如下class base private: /私有数据成员int x;int y;public: /公有成员函数void init(int a, int b)x = a;y = b;void print()int r;r = 2*x - y;cout 2* x - y = r;cout endl;void main()base a;a.init(68,55);a.print();运行结果:2.完成下面类中成员函数的定义。class Pointprivate:int m, n;public:Point(int, int); /带两个参数的构造函数原型声明Point(Point&); /带一个引用参数的复制构造函数原型声明;Point : Point(int a, int b)m = a;n = b;Point : Point(Point& t)m = t.m;n = t.n;五、程序分析题 1.给出下面程序的输出结果。 #include using namespace std;class baseprivate:int a, b;public:base()cout Destory. a , b endl;base(int a, int b):b(b),a(a)cout 初始化. a , b endl;答:没有输出结果,因为只是定义了类,没有产生类对象。如果加main函数,并在main中产生一个类对象,则有输出结果void main()base a(11, 22);输出:2.分析下面程序的输出结果。 #include using namespace std;class baseprivate:int a, b;public:base()cout Destory. a , b endl;base(int a, int b):b(b),a(a)cout 初始化. a , b endl;答:没有输出结果,因为只是定义了类,没有产生类对象。如果加main函数,并在main中产生一个类对象,则有输出结果void main()base a(11, 22);输出结果:六、编程题 1.设计一个点类Point,再设计一个矩形类,矩形类使用Point类的两个坐标点作为矩形的对角顶点。并可以输出4个坐标值和面积。使用测试程序验证程序。#include using namespace std;class Point/定义点类Pointprivate:double x, y;/每个点有两个私有数据成员public:void Setxy(double a, double b) /Setxy()函数用于给x、y赋值,从而实现更改x、y的值x = a;y = b;double Getx() return x; /得到横坐标x的值double Gety() return y; /得到纵坐标y的值Point(double a=0, double b=0) /带两个默认参数的构造函数,实现对x、y的初始化x = a;y = b;class Rectangle /定义矩形类private:Point P1,P2; /使用Point类的两个坐标点作为对角顶点public:void SetPeak(Point& A1, Point& A2) /SetPeak()函数用于给两个顶点P1、P2赋值,从而实现更改顶点的值P1 = A1;P2 = A2;void PrintPeak() /打印输出四个顶点的坐标Point P3(P1.Getx(), P2.Gety();/计算第3个顶点的坐标Point P4(P2.Getx(), P1.Gety();/计算第4个顶点的坐标cout 顶点1坐标:( P1.Getx() , P1.Gety() ) endl;cout 顶点2坐标:( P2.Getx() , P2.Gety() ) endl;cout 顶点3坐标:( P3.Getx() , P3.Gety() ) endl;cout 顶点4坐标:( P4.Getx() , P4.Gety() ) 0) ? area : -area; /保证面积位正值cout 矩形面积 = area endl;Rectangle(Point A1, Point A2) /矩形类的构造函数P1 = A1;P2 = A2;void main() /主函数Point P1(2.3, 10);/产生点对象 P1Point P2(1.5, 8.6);/产生点对象 P2Rectangle rect(P1,P2); /产生矩形对象 rectrect.PrintPeak();/调用函数PrintPeak()输出四个顶点rect.PrintArea();/调用函数PrintArea()输出矩形面积cout endl;/换行P1.Setxy(5.5, 11.2);/调用点类的成员函数Setxy()重新给P1赋值P2.Setxy(0.5, 5.5);/调用点类的成员函数Setxy()重新给P2赋值rect.SetPeak(P1, P2);/使用新的顶点对矩形的对角顶点初始化rect.PrintPeak();/再调用函数PrintPeak()输出四个顶点rect.PrintArea();/再调用函数PrintArea()输出矩形面积输出结果:2.使用内联函数设计一个类,用来表示直角坐标系中的任意一条直线并输出它的属性。#include using namespace std;class Line /定义直线类 两点确定一直线private:double x1, y1, x2, y2; /经过两个点,两个坐标四个值public:void SetPoint(double m1, double n1, double m2, double n2); /SetLine()函数用于给经过的两个点赋值void PrintPoint(); /输出直线经过的两个点(两点可确定一直线)void PrintSlope(); /输出直线的斜率Line(double=0, double=0, double=0, double=0); /带默认参数的构造函数;inline void Line:SetPoint(double m1, double n1, double m2, double n2) /SetPoint()函数用于给经过的两个点赋值x1 = m1;y1 = n1;x2 = m2;y2 = n2;inline void Line:PrintPoint() /输出直线经过的两个点(两点可确定一直线)cout 直线经过点1的坐标:( x1 , y1 ) endl;cout 直线经过点2的坐标:( x2 , y2 ) endl;inline void Line:PrintSlope() /输出直线的斜率double slope;slope = 1.0 * (y2 - y1) / (x2 - x1); /乘以1.0是为了防止分母为整数时输出错误值cout 直线的斜率 k = slope endl;inline Line:Line(double m1, double n1, double m2, double n2) /使用默认参数的构造函数,用于初始化坐标值x1 = m1;y1 = n1;x2 = m2;y2 = n2;void main() /主函数Line L1(1, 2, 2.5, 3.8);/产生直线类对象L1并初始化L1.PrintPoint();/输出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论