ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:254.70KB ,
资源ID:7708757      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7708757.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c++面向对象复习题答案版要点.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c++面向对象复习题答案版要点.docx

1、c+面向对象复习题答案版要点填空题1.C+中有两种数据类型: (char )和(int long )可以使用signed修饰符。在C+中,用数组、指针、和(引用 )作为函数参数,能够将参数值带回。2. 为了降低函数调用的时间开销,建议将小的调用频繁的函数定义为( 内联函数),方法是 在函数类型前加上(in li ne )关键字。3. 面向对象的程序设计有四大特征,它们是抽象、封装、 (继承 卜(多态)。4. 拷贝构造函数是在用一个对象初始化另一个对象时被调用, 系统缺省的拷贝构造函数的工作方法是(把对象的每个数据成员的值都复制到新建立的对象中 )。5. 用new申请某一个类的动态对象数组时,在

2、该类中必须能够匹配到 (该类的)构造函数,否 则应用程序会产生一个编译错误。6. 静态数据成员必须在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象 (共 享)。7. 在C+中,定义重载函数时,应至少使重载函数的参数个数或参数类型 (不同)。8. 在C+中,虽然友元提供了类之间数据进行访问的一种方式, 但它破坏了面向对象程序设计的(封装 )特性。9. 预编译指令由三种,它们是:文件包含、 (宏定义)和(条件编译)。10. 静态的成员函数没有隐含的 (this ),所以,它们只能直接访问类的静态的数据成员。11. 在C+中,函数的参数有两种传递方式,它们是值传递和 (地址)。12. 当非静

3、态成员函数被调用时,该成员函数的 (this )指向调用它的对象。13. 拷贝构造函数使用(引用)作为参数初始化创建中的对象。14.在公有继承的情况下,基类数据成员在派生类中的访问权限 (不变)。15. 在 C+中,构造派生类对象时,总是先从 (基类)的初始化开始的。16. 当需要统计程序中某个类创建对象的个数时,需要给该类定义( 静态数据)成员。17.在多个类之间有重复继承时,为避免被重复继承的基类数据成员在内存中有多个拷贝, 应将该基类定义为(虚基类)。18.在 C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为 (抽象类 ),定义该类至少具有一个(纯虚函数 )。19.在C+中构

4、造一个对象时,其数据成员在构造函数中初始化。对于内嵌的对象、 (常量卜(引用)数据成员需要在构造函数的成员初始化列表中初始化。20. 在类的定义中,说明为protected的数据成员称为保护成员。 保护数据成员具有双重作用:对于其派生类而言, (可以访问);而对于其外部的程序而言, (不可以访问 )。21.控制格式输出的操纵符中,(setprecision )是设置数据精度的,( hex )是设置十六进制的。22.如果s是int型变量,且 s=6,则下面s%2+( s+1)%2表达式的值为 _0_一_。23. 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch= a4的

5、值 为 _e 。24. 数组与函数参数联系密切, 当用数组元素作函数参数时, 这是属于值传递;当数组名作为参数时,这是属于地址 传递,对形参的改变可影响到实参。25利用“对象名.成员变量”形式访问的对象成员仅限于被声明为 公有_ 的成员;若要访问其他成员变量,需要通过公有 函数或友元函数函数。26.一个_类 和对象的关系,正如基本数据类型与该类型的变量一个。27类成员的默认访问方式是 _私有的 .28. 一个类有一多个 个构造函数,有一一个 析构函数。29.类的静态_成员函数不能对类中的非静态成员进行默认访问。30. 如果说明类 B是类A的友元类,则类 B的所有成员函数都是类 A的_友元函数

6、。31. 利用成员函数对二元运算符重载, 其左操作数为 _对象 ,右操作数为 实际参数 。32. 类有两种用法:一种是类的实例化,即生成类的 模板类 ;另一种是通过基类 派生出新的类。33. 运算函数中的关键字是 _ .operator ,它和运算符一起组成该运算符函数的函数名。34. 如果一个类中有一个或多个纯虚函数,则这个类称为 _ _抽象类 。35. 文件的打开是通过使用类 对象 的成员函数来实现的。36. 设所有变量均为整型,则表达式( e=2, f=5 , e+, f+ , e+f)的值为_9 。37. 已知c的ASCII码为十进制数 99,设k为字符型变量,则表达式 k= c +1

7、的值为 d 。38. 函数的形参在未被调用之前 _不被 分配空间,函数的形参的类型 要和实参的相同。39. 类的成员分为数据成员和 成员函数 。40. 类完成了面向对象程序设计的抽象 特性。41. 构造函数是对象 被创建时自动执行,对象消失时自动执行的成员函数称为 析构 对象43. 在继承机制下,当对象消亡时,编译系统先执行 _派生类 的析构函数,然后才执行派生类中子对象类的析构函数,最后执行 一基类 的析构函数。44. 类的静态 数据成员是类所有对象共享的成员。45. 友元函数不是 类的成员函数。(是/不是)46. 如果类A继承了类B,则类A称为派生类 ,类B称为基类 。47. 运算符重载后

8、,原运算符的优先级和结合特性 不会改变。(会/不会)48. _纯虚函数 一个在基类中说明的虚函数, 但未给出具体的实现, 要求在其派生类实现。49. 文件的关闭是通过通过使用类 的成员函数 来实现的。(去掉)二、选择题1.面向对象的(B )是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。不 允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。2. C+的合法注释是(B )。A/*This is a C program/*B/ This is a C programC“This is a C program ”D ./*This is a C program/3关于C+和C语

9、言的描述中,(C)是错误的?AC是C+的一个子集B . C程序在C+环境可以运行CC+程序在C环境可以运行D . C+是面向对象的而 C是面向过程的4运算符 +、=、=、% 中,优先级最低的运算符是( C )。A. + B.a+&cd )? +d : a=中,优先级最高的运算符是( C )。A . + B. = C. * D. =24下列不合法的变量名为( A )。A int B int1 C name_1 D name025.已知 x=43 , ch= A y=0 ;则表达式(x=y&ch B &!y 的值是(C )。A . 0 B .语法错 C . 1 D .“假”A .语句for (i=

10、0 ; i+ )表示无限循环 B. for (;)表示无限循环 26以下不正确的是( c)。 ?C. for ()也表示无限循环 D. while ( 1)表示无限循环27. 在函数的返回值类型与返回值表达式的类型的描述中,错误的是( B,D )。A.函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的B.函数返回值的类型就是返回值表达式的类型C.函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型D.函数返回值类型决定了返回值表达式的类型28. 如果一个函数无返回值,定义时它的函数类型应是( C)。A.任意 B . int C . void D .无29. 在C+

11、语言中,关于参数默认值的描述正确的是( A,B)。A.只能在函数定义时设置参数默认值B.设置参数默认值时,应当从右向左设置C.设置参数默认值时,应当全部设置D.设置参数默认值后,调用函数不能再对参数赋值30.若有以下定义,则说法错误的是 ( D ) 。int a=100,*p=&a ;A .声明变量p,其中*表示p是一个指针变量B .变量p经初始化,获得变量 a的地址C.变量p只可以指向一个整形变量D .变量p的值为10031.列关于结构体的说法错误的是( D )。A .结构体是由用户自定义的一种数据类型B .结构体中可设定若干个不同数据类型的成员C.结构体中成员的数据类型可以是另一个已定义的

12、结构体D .在定义结构体时,可以为成员设置默认值32. 下列有关类的说法不正确的是( C )。A.对象是类的一个实例B.任何一个对象只能属于一个具体的类C.一个类只能有一个对象D.类与对象的关系和数据类型与变量的关系相似33.( C )的功能是对象进行初始化。A .析构函数 B.数据成员 C.构造函数 D.静态成员函数34.关于友元的描述中, ( A )是错误的。A.友元函数是成员函数,它被说明在类体内B.友元函数可直接访问类中的私有成员C.友元函数破坏封装性,使用时尽量少用D.友元类中的所有成员函数都是友元函数35 为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权

13、限定义为(A,B,CC.可以定义友元函数 D 不能说明其对象三、指出并改正下列程序段中的语法错误。题目答案1.float x=3.26f;int & ref仁 x; float1.类型不一致2.int d1=3, d2=2;int * const dp=&d1; dp=&d2;*dp=5;2.常指针3. /Nums为已定义的类 Nums *fp;fp=new in t4;3.类型不一致4.void fun c(i nt first, int 2_sec nd);4.标识符得字母开头5.void Pixel:operator=(Pixel &p1, Pixel &p2);5.“ = ”运算符重载

14、函数返回类型不对6./Pixel 有两个整型成员 x和y Pixel Pixel:operator+=(Pixle&p)c onst x+=p.x;y+=p.y; return *this;6.在这里this是指向常量的常指针2、指出并改正下列程序段中的语法错误。题目答案1.int x=13;const int &ref=x;ref=10;1.常引用不能赋值了2.double *fp; fp=new in t(3);2.类型不一致3. void func( first, int sec nd);3. first 不是类型说明4. /Pixel 有两个整型成员 x和y,其拷/贝构造函数定义如下:

15、void Pixel(co nst Pixle & p);4.不能有void ”5.friend Pixel & operator=(Pixel &p1,Pixel&p2);5.不能定义友元函数,只能是成员函数。6. /Pixel 有两个整型成员 x和yPixel Pixel:operator+(i nt) Pixel temp; temp=*this;x+;y+; return *this; temp;6.四、程序填空1编写函数将字符串按逆序存放。#in clude#in clude#in clude void mai n() int i,n;char s100,temp;couti npu

16、t stri ng:e ndl; (1) get(s); I In= (2) strlen(s); for(i=0;i n/2;i+) temp=si;si=s n_i_1; sn _i_1=temp; coutNow,stri ng:e ndl;puts(s);2下列程序定义了类 Pixel,请完成前置+和后置+的运算符函数的定义。class Pixelint x,y;public:Pixel(i nt xx=0,i nt yy=O) x=xx; y=yy; Pixel operator +();Pixel operator +(i nt);void display();Pixel Pixe

17、l:operator +()x+; y+; return ( 3) *this Pixel Pixel:operator +(i nt) Pixel temp=*this; x+; y+;return ( 5) temp; void Pixel:display()cout(x,y)e ndl;3根据给定的程序执行结果,将下列程序补充完整。#in clude class Basepublic: ( 6 ) Base() cout ” Delete Derived Tend; ;class Derived:public Base public: ( 7 ) Derived () cout ” De

18、lete Base lend; ;void mai n()Base *p1= Derived _; delete p1; 程序的执行结果如下:Delete DerivedDelete Base4.定义一个字符串类 String,有两个私有数据成员: char* content和int len;要求1 )在构造函数中提示用户输入字符串, ;2)用户能提取和显示字符串;(分别由两个函数完成)3)实现对字符串中所有小写字母变成大写,并显示。 注意内存的分配与释放。类定义的部分代码如下,请补充代码使类的定义完整。#in clude #in clude #i nclude class Stringcha

19、r* content;int len;public:Stri ng();Stri ng() ( 1 ) delete content; void display();void upper_str(); char* get_str() const ( 2_)一return content; ;Stri ng:Stri ng()char ch50;?cout ch;len=strle n( ch); content= ( 3 ) new char50: if(!co ntent)cout Memory allocation eror!;exit(1);strcpy(c onten t,ch);vo

20、id Strin g:display() coutc onten t have le n characters.e ndl; void Strin g:upper_str() for (int i=0;ile n;i+)if ( 4 ) (= contenti& contenti conten ti= ( 5 ) conten ti+32; 5.下列程序定义了类 Point,请完成前置-和后置-的运算符函数的定义。class Poi ntfloat x,y;public:Poin t(float xx=0,float yy=0) x=xx; y=yy; Point operator -();P

21、oint operator -(i nt);void display();Point Poin t:operator -()x-; y-; return ( 6 )*this; Point Poin t:operator -(i nt)void Poin t:display()cout(x,y)e ndl;6、程序填空,直接将答案写在空行上1.2.#in clude #in clude 5class Complexdouble real,image;public:Complex(double r=0,double i=0) real=r; image=i; ;4 friend ostream

22、& operator ( ostream&, Complex &);5 ostream & operator ( ostream & output Complex & obj); output obj.real obj.image; incolude /1 class A int a;public: A(int i)a=i;void prin t()coutae ndl;class B A obj_a;int b; |public:_B(int i): obj_a (i) _ _ b=i; void prin t(); ; _void B:pri nt() _/3_obj_a.pri nt()

23、; coutbe ndl;int main() B obj_b(3,4);obj_b.pri nt(); return 0; 6 return output ; int mai n() 4Complex c; coutc;return 0;/重载五、写出程序的运行结果1.#in clude int main( void)char str=c on figurati on;第1题的运行结果如下:con figurati on cniuai ncdefchar *p=str; coutpe ndl;for(i nt i=0;isizeof(str);i=i+2) coutstri;coutendl;/ 字符 c 的 ASCII 码是 99for(i=0;i4;i+)cout*p+i;coute ndl;return 0;3.2.第4题 运行结果:# in clude class Node public:int data;Node *n ext;Node( int d,Node * q=0) data=

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1