《2022年面向对象程序设计习题 .pdf》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计习题 .pdf(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、选择题 1. 程序中主函数的名字为()。 A. main B. MAIN C. Main D. 任意标识符 2. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。 A. 内联函数 B.重载函数 C.递归函数 D.函数模板 3. 将两个字符串连接起来组成一个字符串时,选用()函数。 A. strlen() B. strcap() C. strcat() D. strcmp() 4. 对于任一个类,用户所能定义的析构函数的个数至多为( )。 A. 0 B. 1 C. 2 D. 任意个 5. 对类中引用成员的初始化是通过构造函数中给出的( )实现的。 A. 函数体 B. 参数
2、表 C. 初始化表 D. 初始化表或函数体6. 假定 AB 为一个类,则执行“AB x(a,5);”语句时将自动调用该类的( )。 A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数7. 对于任一个类,用户所能定义的析构函数的个数至多为( )。 A. 0 B. 1 C. 2 D. 任意个8. 用 new运算符创建一维整型数组的正确语句是_。 A. int *p=new a10; B.int *p=new float10; C. int *p=new int10; D.int *p=new int5=1,2,3,4,5 9. 假定有定义“ int b10; int *
3、pb; ”,则不正确的赋值语句为 () 。 A. pb=b; B. pb=&b0; C. pb=new int; D. pb=b5; 10. 程序中主函数的名字为()。 A. main B. MAIN C. Main D. 任意标识符 11. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。 A. 内联函数 B.重载函数 C.递归函数 D.函数模板 12. 将两个字符串连接起来组成一个字符串时,选用()函数。 A. strlen() B. strcap() C. strcat() D. strcmp() 13. 用 new运算符创建一维整型数组的正确语句是_ 。 A.
4、int *p=new a10; B.int *p=new float10; C. int *p=new int10; D.int *p=new int5=1,2,3,4,5 14. 假 定 有 定 义 “ int b10; int *pb; ”, 则不 正确 的赋 值语 句为()。 A. pb=b; B. pb=&b0; C. pb=new int; D. pb=b5; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 35 页 - - - - - - - - - 15.
5、假定 AA为一个类, a为该类公有的数据成员,x为该类的一个对象,则访问 x 对象中数据成员 a 的格式为()。 A. x(a) B. xa C. x-a D. x.a 16. 假定 AB 为一个类,则执行“AB x(a,5);”语句时将自动调用该类的( )。 A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数 17. 对于任一个类,用户所能定义的析构函数的个数至多为( )。 A. 0 B. 1 C. 2 D. 任意个 18. 对类中引用成员的初始化是通过构造函数中给出的( )实现的。 A. 函数体 B. 参数表 C. 初始化表 D. 初始化表或函数体 19. 如果
6、表达式 a=b中的“ =”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为()。 A. a.operator=(b) B. b.operator=(a) C. operator=(a,b) D. operator=(b,a) 填空题1. 若只需要通过一个成员函数读取其数据成员的值,而不需要修改它们,则应在函数头的后面加上 _关键字;若只需要读取引用参数的值,不需要对其修改,则应在该参数说明的开始使用_ 关键字。2假定一个类对象数组为AN ,当定义该数组时,将自动调用该类的无参构造函数的次数为 _次,当离开它的作用域时,将自动调用该类析构函数的次数为 _次。3 假 定AB 为 一
7、 个 类 , 则 类 定 义 体 中 的 “ AB(AB& x); ” 语 句 为 该 类_的 原 型 语 句 , 而 “ operator=(AB& x);” 为 该 类_ 的原型语句。4. 在 定义 一个 派生 类时 ,使 用 _关键 字表示 为私有继承,使用_关键字表示为公有继承。5. 元素类型为double的二维数组a46共有 _个元素,共占用_字节的存储空间。6. 假定对二维数组a34进行初始化的数据为3,5,6,2,8,7,则a11和 a23分别被初始化为 _和_。7. 假定 p 为指向二维数组int d46的指针,则 p 的类型为 _,其中一个元素 dij表示成指针访问方式为 _
8、 。8假定一个类对象数组为AN ,当定义该数组时,将自动调用该类的无参构造函数的次数为 _次,当离开它的作用域时,将自动调用该类析构函名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 35 页 - - - - - - - - - 数的次数为 _次。9. 已知一维数组类ARRAY 的定义如下, ARRAY 与普通一维数组区别是:其重载的运算符 要对下标是否越界进行检查。 class ARRAY int *v; /指向存放数组数据的空间 int s; /数组大小 public:
9、 ARRAY(int a, int n); ARRAY()delete v; int size() return s; int& operator(int n); ; _(1)_ operator(int n) / 的运算符成员函数定义 if(n0 | _(2)_) cerr下标越界! ; exit(1); return _(3)_; (1) (2) (3) 10. 常数-4.205 和 6.7E-9 分别具有 _ 和_位有效数字。 11. 元素类型为double的二维数组a46共有 _个元素,共占用_字节的存储空间。 12. 假定对二维数组a34进行初始化的数据为3,5,6,2,8,7,则a
10、11和 a23分别被初始化为 _和_。 13. 假定 p 为指向二维数组int d46的指针,则 p 的类型为 _,其中一个元素 dij表示成指针访问方式为 _ 。 14. 已知变量 a 定义为“ int a=5;”,要使 ra 成为 a 的引用,则 ra 应定义为_ ,要使 rb 指向 a,则 r b 应定义为 _ 。 15. 若只需要通过一个成员函数读取其数据成员的值,而不需要修改它们,则应在函数头的后面加上 _关键字;若只需要读取引用参数的值,不需要对其修改,则应在该参数说明的开始使用_ 关键字。16假定一个类对象数组为AN,当定义该数组时,将自动调用该类的无参构造函数的次数为 _次,当
11、离开它的作用域时,将自动调用该类析构函数的次数为 _次。 17 假 定AB 为 一 个 类 , 则 类 定 义 体 中 的 “ AB(AB& x); ” 语 句 为 该 类_的 原 型 语 句 , 而 “ operator=(AB& x);” 为 该 类名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 35 页 - - - - - - - - - _ 的原型语句。 18. 在定义一个派生类时,使用_关键字表示为私有继承,使用_ 关键字表示为公有继承。 19. 重载一个运算符
12、时,该运算符的_、_ 以及操作符的个数不允许改变。程序题1实现一个类 A,在 A中有两个私有的整型变量a 和 b,定义构造函数对 a 和 b进行初始化,并实现成员函数geta()取得 a 的值和 getb ()取 b 的值。实现类 B从 A继承,覆盖 geta (),使其返回a 的 2 倍。答案:#include using namespace std; class A int a; int b; public: A(int m,int n):a(m),b(n) int geta() return a; int getb() return b; ; class B :public A publ
13、ic: B(int m,int n):A(m,n) int geta() return A:geta()*2; ; void main() B b(2,2); b.geta(); coutb.geta()=a&*(str+i)x2?x2:x1; float min(float x1, float x2, float x3) return min( min(x1, x2), x3); 5. 实现一个 Point 类(数据成员为一个点在两维直角坐标系内的坐标);派生一个圆 Circle类;要求圆能计算周长,能够画出一个圆。6. 定义一个复数类 Complex,要求复数类重载“ *”;能够将复数对象
14、转换为一个整数。#includeusing namespace std; class complex public: complex(int r=0,int i=0,int me=0)real=r;imag=i;m=me; complex operator * (complex c2); void display(); void display1(); private: int real; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 35 页 - - - - - -
15、- - - int imag; int m; ; complex complex:operator *(complex c2) complex c; c.real=c2.real*real; c.imag=c2.imag*imag; c.m=c.real-c.imag; return complex(c.real,c.imag,c.m); void complex:display() cout”( “real ”, ”imag ”) ”endl; void complex:display1() coutmendl; void main() complex c1(5,4),c2(2,10),c3
16、; cout”c1=”; c1.display(); cout”c2=”; c2.display(); c3=c1*c2; coutitem; front = front-nextItem; delete pFront; return retVal; / 模板类 Queue的函数成员 add() 的实现template void Queue:add(const Type & newItem) QueueItem *pNew = new QueueItem; pNew-item = newItem; _(D)_; if (front = NULL) front = back = pNew; el
17、se back-nextItem = pNew; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 35 页 - - - - - - - - - _(E)_; template Queue:Queue() QueueItem *p = front, *q; while(p != NULL) q = p-nextItem; delete p; p = q; 问题 1: 程序中有几处填空,将它们完成。(A)back(NULL) (B)front = NULL 或 back =
18、 NULL (C )pFront = front (D )pNew-nextItem = NULL (E)back = pNew 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 35 页 - - - - - - - - - 问题 2:()题中程序第 1,2 行为什么要说明一下类模板Queue ?如果没有这两行语句,程序还正确吗?答:不正确。因为在类QueueItem模板类的定义中用到了模板类Queue ,而此时Queue还没有定义,所以要先声明一下,告诉编译程序Queu
19、e是一个模板类,它将在程序的其他地方定义。如果没有这个说明,编译程序就不知道标识符Queue代表什么样的含义了。问题 3:程序第 22,23 行各有一个 const ,它们各自表示什么含义:答:第 22 行的 const 修饰的是函数的参数,表示在这个函数体中不能改它所修饰的参数所对应的实际参数的值。第 23 行的 const 修饰的是模板类Queue的成员函数 is_empty() ,它表示在函数 is_empty() 的函数体中不能改变任何数据成员的值。问题 4:程序中模板类 Queue的析构函数主要做了什么事情?为什么要这么做?答:析构函数中主要是释放链表中存放的各个节点的空间。因为 Q
20、ueue对象在其生存期间可能加入了很多节点, 从堆中申请了一些内存空间, 这些空间应该随着对象的消亡而释放掉,所以需要在析构函数中来释放这些空间。问题 5:下面的程序使用了queue.h 文件中定义的类模板,说明程序中哪些定义队列对象的语句是不正确的,哪些是正确的。#include “queue.h”void main() Queue q1; / 1 Queue q2; / 2 Queue q3(100); / 3 Queue q4100; / 4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
21、 - - 第 12 页,共 35 页 - - - - - - - - - Queue *q5 = new Queue; / 5 / , . delete q5; 语句号1 2 3 4 5 错对错对对6下面的程序定义了三个类,Base是图形对象基类, Point 表示屏幕上的一个点,ColorPoint表示带颜色的点,基类中利用posx 和 posy 记录图形对象的位置。先阅读三个类的定义, 然后回答后面的问题 (假定程序中调用的SetPixel()和 SetColor() 是系统函数库中预定义的函数,可以直接使用)。/*/class Basepublic:Base():posz(0),posy
22、(0) ;Base(int px,int py);posz(px),posy(py) ;virtual void draw()=0;protected:int posx,posy; /图形对象的位置;class Point:public Basepublic:Point(int px,int py):Base(px,py) void draw() SetPixel(posx,posy); ;class Colorpoint:public Point名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
23、- - 第 13 页,共 35 页 - - - - - - - - - public;ColorPoint(int px,int py):Point(px,py)color=0;ColorPoint(int px,int py,int c):Point(px,py),color(c) void draw()SetColor(color);Point:draw();protected:int color;/*/问题下面的主程序使用了上面定义的三个类,程序中定义对象语句哪些是正确的,哪些是错误的?void main()Base b; /1Point p1; /2Point p2(3,4); /3C
24、olorPoint cp1; /4ColorPoint cp2(5,6); /5ColorPoint cp3(7,8,1); /6答: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 35 页 - - - - - - - - - 问题 : 将类 ColorPoint的两个构造函数合并为一个构造函数,写出该函数的实现(提示 : 使用函数的默认参数)。答: 合并后的构造函数定义为: ColorPoint( int px , int py , int c=0 ) : Poin
25、t( px , py ) , color( c ) 问题 : 下面的程序段Base * p;p=new ColorPoint(5,6);pdraw()运行后将调用 : (A)Base:draw()(B)Point:draw()(C)ColorPoint:draw()(D):draw()答: 运行后将调用 (C) ,即 ColorPoint:draw( )一、程序题:1实现一个类 A,在 A中有两个私有的整型变量a 和 b,定义构造函数对 a 和 b进行初始化,并实现成员函数geta()取得 a 的值和 getb ()取 b 的值。实现类 B从 A继承,覆盖 geta (),使其返回a 的 2
26、倍。答案:#include using namespace std; class A int a; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 35 页 - - - - - - - - - int b; public: A(int m,int n):a(m),b(n) int geta() return a; int getb() return b; ; class B :public A public: B(int m,int n):A(m,n) int geta
27、() return A:geta()*2; ; void main() B b(2,2); b.geta(); coutb.geta()=a&*(str+i)x2?x2:x1; float min(float x1, float x2, float x3) return min( min(x1, x2), x3); 理解问答题,写出前三小题的程序运行结果和指出后两小题的程序(或函数)所能实现的功能。 1. #include const int B=2; void main() int p=1,s=1; while(s50) p*=B; s+=p; couts=sendl; 2. #includ
28、e class CE private: int a,b; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 35 页 - - - - - - - - - int getmin() return (ab? a:b); public: int c; void SetValue(int x1,int x2, int x3) a=x1; b=x2; c=x3; int GetMin(); ; int CE:GetMin() int d=getmin(); return (dSet
29、Value(x+y,y-z,10); coutGetMin()endl; CE a=*ep; couta.GetMin()*3+15endl; 运行结果: 3. #include class A int a10; int n; public: A(int aa, int nn): n(nn) for(int i=0; in; i+) ai=aai; int Get(int i) return ai; int SumA(int nn) int s=0; for(int j=0; jnn; j+) s+=aj; return s; ; void main() 名师资料总结 - - -精品资料欢迎下
30、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 35 页 - - - - - - - - - int a=2,5,8,10,15,20; A x(a,4); A y(a,6); int d=1; for(int i=0; i4; i+) d*=x.Get(i); int f=y.SumA(5); coutd=dendl; coutf=fendl; 运行结果: 4. #include #include #include const int N=10; int ff(int x, int y) int z; c
31、outx+yz; if(x+y=z) return 1; else return 0; void main() int a,b,c=0; srand(time(0); /初始化随机数序列 for(int i=0;iN;i+) a=rand()%20+1; /rand()函数产生0-32767 之间的一个随机数 b=rand()%20+1; c+=ff(a,b); cout得分:c*10endl; 程序功能: 5. char *f(char *s) int n=strlen(s); char* r=new charn+1; for(int i=0; i=a & sims) coutError!e
32、ndl; exit(1); MS=ms; n=nn; a=new intMS; for(int i=0; in; i+) ai=aai; int CompareBig(AA& b); /比较*this与 b 的大小,从前向后按两数组 /中的对应元素比较,若 *this中元素值大则返回1,若 b 中 /元素值大则返回 -1,若相等则继续比较下一个元素,直到 /一个数组中无元素比较,此时若两者的n 值相同则返回 0, /否则若 *this中的 n 值大则返回 1,若 b 中的 n 值大则返回 -1 。 ; 程序题:1定义一个图形 Shape类并用继承方法定义圆形Circle类. 答案:名师资料总结
33、 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 35 页 - - - - - - - - - class shape public: shape(); ; class circle:public shape public: circle(); ; 2. 实现一个 Point 类(数据成员为一个点在两维直角坐标系内的坐标);派生一个圆 Circle类;要求圆能计算周长,能够画出一个圆。3. 定义一个复数类 Complex,要求复数类重载“ *”;能够将复数对象转换为一个整数。#inc
34、ludeusing namespace std; class complex public: complex(int r=0,int i=0,int me=0)real=r;imag=i;m=me; complex operator * (complex c2); void display(); void display1(); private: int real; int imag; int m; ; complex complex:operator *(complex c2) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
35、名师精心整理 - - - - - - - 第 21 页,共 35 页 - - - - - - - - - complex c; c.real=c2.real*real; c.imag=c2.imag*imag; c.m=c.real-c.imag; return complex(c.real,c.imag,c.m); void complex:display() cout”( “real ”, ”imag ”) ”endl; void complex:display1() coutmendl; void main() complex c1(5,4),c2(2,10),c3; cout”c1=”
36、; c1.display(); cout”c2=”; c2.display(); c3=c1*c2; coutitem; front = front-nextItem; delete pFront; return retVal; / 模板类 Queue的函数成员 add() 的实现template void Queue:add(const Type & newItem) QueueItem *pNew = new QueueItem; pNew-item = newItem; _(D)_; if (front = NULL) front = back = pNew; else back-nex
37、tItem = pNew; _(E)_; template 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 35 页 - - - - - - - - - Queue:Queue() QueueItem *p = front, *q; while(p != NULL) q = p-nextItem; delete p; p = q; 问题 1: 程序中有几处填空,将它们完成。(A)back(NULL) (B)front = NULL 或 back = NULL (C )p
38、Front = front (D )pNew-nextItem = NULL (E)back = pNew 问题 2:()题中程序第 1,2 行为什么要说明一下类模板Queue ?如果没有这两行语句,程序还正确吗?答:不正确。因为在类QueueItem模板类的定义中用到了模板类Queue ,而此时Queue还没有定义,所以要先声明一下,告诉编译程序Queue是一个模板类,它将在程序的其他地方定义。如果没有这个说明,编译程序就不知道标识符Queue代表什么样的含义了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
39、 - - - - - - 第 26 页,共 35 页 - - - - - - - - - 问题 3:程序第 22,23 行各有一个 const ,它们各自表示什么含义:答:第 22 行的 const 修饰的是函数的参数,表示在这个函数体中不能改它所修饰的参数所对应的实际参数的值。第 23 行的 const 修饰的是模板类Queue的成员函数 is_empty() ,它表示在函数 is_empty() 的函数体中不能改变任何数据成员的值。问题 4:程序中模板类 Queue的析构函数主要做了什么事情?为什么要这么做?答:析构函数中主要是释放链表中存放的各个节点的空间。因为 Queue对象在其生存期
40、间可能加入了很多节点, 从堆中申请了一些内存空间, 这些空间应该随着对象的消亡而释放掉,所以需要在析构函数中来释放这些空间。问题 5:下面的程序使用了queue.h 文件中定义的类模板,说明程序中哪些定义队列对象的语句是不正确的,哪些是正确的。#include “queue.h”void main() Queue q1; / 1 Queue q2; / 2 Queue q3(100); / 3 Queue q4100; / 4 Queue *q5 = new Queue; / 5 / , . delete q5; 语句号1 2 3 4 5 错对错对对名师资料总结 - - -精品资料欢迎下载 -
41、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 35 页 - - - - - - - - - 6下面的程序定义了三个类,Base是图形对象基类, Point 表示屏幕上的一个点, ColorPoint表示带颜色的点,基类中利用posx 和 posy 记录图形对象的位置。先阅读三个类的定义,然后回答后面的问题(假定程序中调用的SetPixel()和 SetColor()是系统函数库中预定义的函数,可以直接使用)。/*/class Basepublic:Base():posz(0),posy(0) ;Base(int
42、 px,int py);posz(px),posy(py) ;virtual void draw()=0;protected:int posx,posy; /图形对象的位置;class Point:public Basepublic:Point(int px,int py):Base(px,py) void draw() SetPixel(posx,posy); ;class Colorpoint:public Pointpublic;ColorPoint(int px,int py):Point(px,py)color=0;ColorPoint(int px,int py,int c):Po
43、int(px,py),color(c) void draw()SetColor(color);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 28 页,共 35 页 - - - - - - - - - Point:draw();protected:int color;/*/问题下面的主程序使用了上面定义的三个类,程序中定义对象语句哪些是正确的,哪些是错误的?void main()Base b; /1Point p1; /2Point p2(3,4); /3ColorPoint cp1
44、; /4ColorPoint cp2(5,6); /5ColorPoint cp3(7,8,1); /6答: 问题 : 将类 ColorPoint的两个构造函数合并为一个构造函数,写出该函数的实现(提示 : 使用函数的默认参数)。答: 合并后的构造函数定义为: ColorPoint( int px , int py , int c=0 ) : Point( px , py ) , color( c ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 29 页,共 35 页 - - -
45、 - - - - - - 问题 : 下面的程序段Base * p;p=new ColorPoint(5,6);pdraw()运行后将调用 : (A)Base:draw()(B)Point:draw()(C)ColorPoint:draw()(D):draw()答: 运行后将调用 (C) ,即 ColorPoint:draw( )程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序后面的标号处。(每小题5 分,共 20 分) 1. 在输出屏幕上打印出一个由字符 * 组成的等腰三角形,该三角形的高为 5 行,从上到下每行的字符数依次为1,3,5,7,9。 #inclu
46、de void main() int i,j; for(i=1;_(1)_;i+) for(j=1;j=9;j+) if(j=5-i | _(2)_) cout ; else _(3)_; coutendl; (1) (2) (3) 2. 从一个字符串中删除所有同一字符后得到一个新字符串并输出。 #include const int len=20; void delstr(char a,char b,char c); void main() char str1len,str2len; char ch; coutstr1; coutch; delstr(str1,str2,ch); coutst
47、r2endl; void delstr(char a,char b,char c) int j=0; for(int i=0; _(1)_; i+) if(_(2)_) bj+=ai; bj=_(2)_; (1) (2) (3) 3. 已知一维数组类 ARRAY 的定义如下, ARRAY 与普通一维数组区别是:其重载的运算符 要对下标是否越界进行检查。 class ARRAY int *v; /指向存放数组数据的空间 int s; /数组大小 public: ARRAY(int a, int n); ARRAY()delete v; int size() return s; int& oper
48、ator(int n); ; _(1)_ operator(int n) / 的运算符成员函数定义 if(n0 | _(2)_) cerr下标越界! ; exit(1); return _(3)_; (1) (2) (3) 4. 一个类定义如下: class Point private: int x, y; public: Point()x=y=0; Point(int x0,int y0) x=x0;y=y0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 31 页,共 35 页
49、 - - - - - - - - - int GetX() return x; int GetY() return y; void Print()coutPoint(x,y)endl; _(1)_; /友元函数声明 _(2)_; /友元函数声明 ; Point operator+(Point& pt,int dd) /加号操作符重载函数,实现Point 类对象与整数的加法 Point temp=pt; temp.x+=dd; temp.y+=dd; return temp; Point operator+(Point& pt1,Point& pt2) /加号操作符重载函数,实现两个Point
50、类对象的加法 Point temp=pt1; temp.x+=pt2.x; temp.y+=pt2.y; _(3)_; (1) (2) (3) 理解问答题,写出前三小题的程序运行结果和指出后两小题的程序(或函数)所能实现的功能。 1. #include const int B=2; void main() int p=1,s=1; while(s50) p*=B; s+=p; couts=sendl; 运行结果: 2. #include class CE 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -