面向对象程序设计答案

上传人:博****1 文档编号:562918446 上传时间:2023-05-10 格式:DOCX 页数:6 大小:12.21KB
返回 下载 相关 举报
面向对象程序设计答案_第1页
第1页 / 共6页
面向对象程序设计答案_第2页
第2页 / 共6页
面向对象程序设计答案_第3页
第3页 / 共6页
面向对象程序设计答案_第4页
第4页 / 共6页
面向对象程序设计答案_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《面向对象程序设计答案》由会员分享,可在线阅读,更多相关《面向对象程序设计答案(6页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计答案面向对象程序设计答案一、单项选择题二、简答题1. 答:对象是一些相关的变量和方法的软件集。软件对象经常用于模仿现实 世界中我们身边的一些真实对象。对象是理解面向对象技术的关键。你可以发现 现实世界中的对象有两个共同特征:它们都有状态和行为。比如某条狗有自己的 状态(比如名字、颜色、生育以及饥饿等等)和行为(比如摇尾巴等等)。同样 某辆自行车也有自己的状态(比如当前档位、两个轮子等等)和行为(比如刹车、 加速、减速以及改变档位等等)2. 答:C中结构只含数据成员,不含成员函数;C+中类即含数据成员,又含成员函数.类定义中默认情况下的成员是private的,而结构定义中的默认情

2、况下的成员是public的3. 答:类对其成员有三种存储控制public 类内外均可见protected 类内及派生类可见private 只有类内可见4. 答:C+程序的内存格局通常分为四个区:*全局数据区(data area)*代码区(code area)*栈区(st ack area)*堆区(heap area)全局变量、静态数据、常量存放在全局数据区,所有类成员函数和非成员函 数存放在代码区,为运行函数而分配的局部变量、函数参数、返回数据、返回地 址等存放在栈区,余下的空间被作为堆区。5. 答:在默认的拷贝构造函数中,拷贝的策略是逐个成员依次拷贝,这种被 称为浅拷贝。但是,一个类可能拥有

3、资源,当其构造函数分配了一个资源(例如 某个堆内存地址)的时候,会发生什么?如果拷贝构造函数简单地制作了一个该 资源的引用的拷贝,而不对它本身分配,就得面临一个麻烦的局面:两个对象都 拥有同一个资源。当对象析构时,该资源将经历两次资源返还。这个时候,我们 在执行拷贝时,最好同时对资源本身进行复制,这种拷贝方法,我们称之为深拷 贝。6. 答:静态数据成员的主要应用场合为:1) 用来保存流动变化的对象个数。2) 作为一个标志,用来指示一个特定的动作是否发生。3) 一个指向一个链表第一个成员或最后一个成员的指针。7. 答:一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默 认的访问。一个静

4、态成员函数与非静态成员函数的根本区别在于,静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this。例如:class Sc public: void nsfn(int a);static void sfn (int &);/void f (Sc& s)(10);/转化为 Sc:nsfn(&s,10)(10);/转化为 Sc:sfn(10)8. 答:分共有派生、私有派生和保护派生。共有派生中public pro tec ted权 限不变,privA te变 inaccessible .私有派生中 public 变 private ,protected private 变 i

5、naccessible.保护派生中 public protected 变 protected ,private 变 inaccessible9. 答:构造函数按照下列的顺序被调用:1. 任何虚拟基类的构造函数按照它们被继承的顺序构造.2. 任何非虚拟基类的构造函数按照它们被继承的顺序构造.3. 任何成员函数的构造函数按照它们声明的顺序调用.4. 类自己的构造函数.三、写出程序的执行结果1. 答:44212. 答: i=26i=273. 答:Base2Base4Basel Base3 OBJ1 OBJ2Derived ok . This is ok.4. 答: RMB amount=13the

6、interest=5. 答:before swap, x:5,y:6after swap, x:6,y:56. 答:434四、程序设计1. 答: AA* AA:Reverse1()AA *px=new AA;px-n=n; px-MS=MS;px-a=new intMS;for(int i=0; in; i+) px-an-1-i=ai;return px;2. 答: int AA:pare(AA b)if(n!=) return 0;for(int i=0; in; i+) if(ai!=i) return 0;return 1;3. 答:#includeclass Pointpublic:

7、void Set(double ix,double iy) a=atan2(iy,ix); /接口 r=sqrt(ix*ix+iy*iy; double xOffset() /接口 return r*cos(a); double yOffset() /接口 return r*sin(a); double angle() /接口 return (180/)*a; double radius()/接口 return r; protected: double a;double r;4. 答:(2) - (10) (2),(4),(10) (12), meClock (14),yourClock8:3

8、0:00 00:00:005. 答: Array:Array(Array aa) n=;a=new intn;for(int i=0; in; i+) ai=i;6. 答:这是个类的友元函数,不属于这个类,但可以访问该类的所有成员 无论这个成员是私有的还是共有的。(10)行,去掉关键字 friend ;(16)行及其后,改为float point:distance ( point & a)float dx =X - ;float dy =Y - ;return sqrt (dx * dx +dy * dy);7. 答: class A_class private:int x,y,t;publi

9、c:A_class(int i,int j):x(i),y(j)if(yx)t=x;x=y;y=t;/其它函数从略friend int Variance (A_class ac); /参数名任意;int Variance (A_class ac)return *-*;void main() A_class A_obj(3,5); cout”Result:”Variance(A_obj)endl;8. 答: Rectangle (float len,float wid):length(len),width(wid) Rectangle ()float GetPerimeter() return

10、2*(length+width); /计算矩形周长 floa t Get Are() re turn leng th* wid th;/计算矩形面积9. 答: #include class plexprivate: float real ; float imag ; public: plex(float r=0,float i=0);void print( ); friend plex operator + (plex& c1,plex& c2); friend plex operator - (plex& c1,plex& c2); friend plex operator - (plex&

11、 c );plex:plex(float r=0,float i=0)real=r; imag=i plex plex:operator + (plex& c1,plex& c2) float r=+;float i=+;returnplex(r ,i );plex plex:operator - (plex& c1,plex& c2) float r=-;float i=-;returnplex(r ,i );plex operator - (plex& c )return plex(-,-); void plex:print( )cout”(“real”,”imag”)”endl; void main()plex x(,),y(,),z;z=x+y; ();z=x-y; ();z=-x; ();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号