C++程序开发试题及答案_第1页
C++程序开发试题及答案_第2页
C++程序开发试题及答案_第3页
C++程序开发试题及答案_第4页
C++程序开发试题及答案_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

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

文档简介

C++程序开发试题及答案1.已知:char*s="123456";则cout<<s+2;的输出结果为()。A)123456B)3C)3456(正确答案)D)2答案解析:指针偏移,后移两个位置2.C++中,关于构造函数和析构函数,正确的描述是()。A)在定义类时,必须自定义构造函数和析构函数,在创建对象时自动调用构造函数,在释放对象时自动调用析构函数B)构造函数和析构函数均可以重载C)已知类Student以及Student*p;在使用p=newStudent;时自动调用无参构造函数创建动态对象,在deleltep;时自动调用析构函数释放动态对象(正确答案)D)构造函数和析构函数都可以成为虚函数答案解析:析构函数不是一定要有;析构函数不能重载;构造函数不能是虚函数。3.关于拷贝构造函数的描述正确的是()。A)通常的拷贝构造函数的参数是对象的指针类型B)如果不自定义拷贝构造函数,系统提供默认的拷贝构造函数(正确答案)C)如果有自定义的构造函数,系统就不再提供拷贝构造函数D)如果需要用已有对象为新创建的对象初始化时,就必须自定义拷贝构造函数答案解析:拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:

通过使用另一个同类型的对象来初始化新创建的对象。

复制对象把它作为参数传递给函数。

复制对象,并从函数返回这个对象。

如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。4.有关静态成员的描述错误的是()。A)某个类的静态数据成员由该类的所有对象所共享B)类的公有静态数据成员既可以用类的对象访问,也可以直接用作用域运算符“::”通过类名来访问C)静态数据成员既可以是私有成员,也可以是公有成员D)类中一旦定义了静态数据成员,就必须定义静态成员函数,以便对静态数据成员进行操作(正确答案)答案解析:不是静态成员函数才能操作静态数据成员。5.一个类的友元函数或友元类能够通过成员访问运算符访问该类的()。A)所有成员(正确答案)B)私有成员C)保护成员D)公有成员答案解析:一个类的友元函数或友元类能够通过成员访问运算符访问该类的所有成员。6.下面关于继承方式的描述中错误的是()。A)公有继承时,基类的公有成员和保护成员在派生类中都成为公有成员(正确答案)B)私有继承时,基类的公有成员和保护成员在派生类中都成为私有成员C)保护继承时,基类的公有成员和保护成员在派生类中都成为保护成员D)无论哪种继承方式,基类中的私有成员在派生类中都无法直接访问答案解析:公有继承时基类的保护成员在派生类中依然是保护成员。如果在派生类中没有重写这个基类的方法的话以公有继承的方式继承基类的成员作用域不变。7.类型兼容是指在基类对象可以出现的地方,都可以使用公有派生类的对象,已知:

classBaseClass

{//…};

classDerivedClass:publicBaseClass

{//…};

BaseClassb,*pb;

DerivedClassd,*pd;

下面不属于类型兼容的是()A)b=d;B)BaseClass&bb=d;C)pd=&b;(正确答案)D)pb=&d;答案解析:类型兼容是指在基类对象可以出现的地方,都可以使用公有派生类的对象,反之不然。8.在派生类中重新定义虚函数时,除了(),其他方面都必须与基类中相应的虚函数保持一致。A)参数个数B)参数类型C)函数名称D)函数体(正确答案)答案解析:派生类中重新定义的虚函数与基类的虚函数参数个数、参数类型、函数名称都一致。9.下列运算符中,必须使用成员函数进行重载的是()。A)==B)=(正确答案)C)>>D)++答案解析:=,[],(),->只能通过成员函数来重载。

C++规定赋值运算符“=”只能重载为类的非静态成员函数,而不可以重载为类的友元函数。10.下列关于运算符重载的描述中,错误的是()。A)运算符重载不可以改变优先级B)运算符重载不可以改变结合性C)运算符重载不可以改变运算符的操作数个数D)加法运算符“+”和赋值运算符“=”都重载之后,意味着“+=”也被重载了(正确答案)答案解析:运算符重载只重载这个运算符本身,与之类似的没有重载,重载没有拼接性。11.有关运算符重载的说法错误的是()。A)在一个类中,可以对一个操作符进行多次重载B)重载赋值运算符“=”时,为了保持原有特性,重载运算符函数中应该使用返回语句“return*this;”C)C++中所有的运算符都可以被重载(正确答案)D)如果在某个类中使用成员函数对运算符重载,其左操作数必须是该类的对象答案解析:大多数C++运算符可以重载。运算符重载是一种形式的C++多态。运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。单目运算符重载:单目运算符只有一个操作数,如!a,-b,&c,*p,还有最常用的++i和--i等。由于单目运算符只有一个操作数,因此运算符重载函数只有一个参数,如果运算符重载函数作为成员函数,则还可省略此参数。下面以自增运算符”++“为例,介绍单目运算符的重载。[例]有一个Time类,包含数据成员minute(分)和sec(秒),模拟秒表,每次走一秒,满60秒进一分钟,此时秒又从0开始算。要求输出分和秒的值。可以看到:在程序中对运算符“++”进行了重载,使它能用于Time类对象。“++”和“--”运算符有两种使用方式,前置自增运算符和后置自增运算符针对“++”和“--”这一特点,C++约定,在自增(自减)运算符重载函数中,增加一个int型形参,就是后置自增(自减)运算符函数。双目运算符重载:双目运算符(或称二元运算符)是C++中最常用的运算符。双目运算符有两个操作数,通常在运算符的左右两侧,如3+5,a=b,i<10等。在重载双目运算符时,不言而喻在函数中应该有两个参数。[例]定义一个字符串类String,用来存放不定长的字符串,重载运算符“==”、“<”和“>”,用于两个字符串的等于、小于和大于的比较运算。有了这个基础后,再增加其他必要的内容。现在增加对运算符重载的部分。为便于编写和调试,先重载一个运算符“>”。程序如下:程序运行结果为1。这只是一个并不很完善的程序,但是,已经完成了实质性的工作了,运算符重载成功了。其他两个运算符的重载如法炮制即可。12.已知某个类的友元函数重载了+=和-,a,b,c是该类的对象,则“a+=b-c”被C++编译器解释为()。A)operator+=(a,operator-(b,c))(正确答案)B)a.operator+=(b.operator-(c))C)operator+=(a,b.operator-(c))D)a.operator+=(operator-(b,c))答案解析:根据运算顺序和优先级,b,c用-重载,再跟a一起用+=重载。13.有关函数模板和模板函数说法错误的是()。A)函数模板只是对函数的描述,编译器不为其产生任何执行代码,所以它不是一个实实在在的函数B)模板函数是实实在在的函数,它由编译系统在遇到具体函数调用时所生成,并调用执行C)函数模板需要实例化为模板函数后才能执行D)当函数模板和一般函数同名时,系统先去匹配函数模板,将其实例化后进行调用(正确答案)答案解析:函数的摸版就是函数定义的时候带有摸版功能但是没有实力化它只是一个空壳子,模版函数就是调用的时候这时给它传递了实力化的类型如<int>这时这个函数就称为模版函数了`因为这个函数是在模版上运行的`它让函数的模版有了实际的类型`就是在函数的模版上工作了`14.一个()允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。A)类模板(正确答案)B)模板类C)函数模板D)模板函数答案解析:C++除了支持函数模板,还支持类模板(ClassTemplate)。函数模板中定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在类声明和类实现中。类模板的目的同样是将数据的类型参数化。15.友员的作用之一是()A)提高程序的运行效率(正确答案)B)加强类的封装C)实现数据的隐蔽性D)增加成员函数的种类答案解析:友员的作用之一是提高程序的运行效率,友元打破了类的封装,使数据开放16.使用派生类的主要原因是()A)提高代码的可重用性(正确答案)B)提高程序的运行效率C)加强类的封装性D)实现数据的隐藏答案解析:使用派生类的主要原因是提高代码的可重用性17.类中定义的成员默认为()访问属性。A)publicB)private(正确答案)C)protectedD)friend答案解析:在c++中,类(class)的所有成员的默认访问权限是私有(private),而结构(struct)的所有成员的默认访问权限是公共(public)。18.C++对C语言作了很多改进,下列描述中()使得C语言发生了质变,从面向过程变成了面向对象。A)增加了一些新的运算符;B)允许函数重载,并允许设置缺省参数;C)规定函数说明必须用原型;D)引进了类和对象的概念;(正确答案)答案解析:C++引进了类和对象的概念,使得C语言发生了质变,从面向过程变成了面向对象。

温馨提示

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

最新文档

评论

0/150

提交评论