c++期末考试选择题整理.docx
C + +程序设计选择题部分3、在C+中实现封装是借助于(B )A、枚举 B、类 C、数组 D、函数返回类型1、确定C+语言中函数的返回值类型的是()A.return语句中的表达式类型调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型答案:D构造函数1、下列关于构造函数的论述中,不正确的是 CB.构造函数可以设置默认参数D.构造函数可以重载A.构造函数的函数名与类名相同C.构造函数的返回类型缺省为int型2、下面有关构造函数的描述中,正确的是(B )。A.构造函数可以带有返回值C.构造函数必需带有参数B.构造函数的名字与类名完全相同D.构造函数必需定义,不能缺省3、构造函数是在(B )时被执行的。A.程序编译B.创建对象 C.创建类 D.程序装入内存4、假定AB为一个类,则执行AB x;语句时将自动调用该类的(B )A、有参构造函数B、无参构造函数C、拷贝构造函数D、赋值重载函数5、构造函数不具备的特征的是(D )A、构造函数的函数名与类名相同B、构造函数可以重载C、构造函数可以设路默认参数D、构造函数必需指定类型说明6、具有转换函数功能的构造函数,应当是(B )oA、不带参数的构造函数;B、带有一个参数的构造函数;C、带有两个以上参数的构造函数;D、缺省构造函数。7、假定AB为一个类,则执行“AB a(2), b 3 , *p 4语句时调用该类构造函数的次 数为()月.3B. 4C. 5D. 9答案:B解析:a(2)调用1次带参数的构造函数,b 3调用3次无参数的构造函数,指针没有给它 支配空间,没有调用构造函数。所以共调用构造函数的次数为4。8、假定一个类的构造函数为 “A(int i=4, int j=0) a=i;b=j;”,则执行 “A x (1);” 语句后,x.a和x.b的值分别为()A.1和0B. 1 和4C. 4和0D. 4和 1答案:A解析:带默认的构造函数,对应实参没有值时就接受形参值。调用构造函数时,i=l,不采用默认值,而只有一个参数,j接受默认值0即r0,因此,=1,40,选择八项。函数重载1、函数重载的目的是 BA.实现共享B.运用便利,提高可读性 C.提高速度 D.削减空间2、不能作为函数重载推断的依据的是(B )A.返回类型B. const C.参数个数D.参数类型3、系统在调用重载函数时,往往依据一些条件确定哪个重载函数被调用,在下列选项中, 不能作为依据的是(D )A、参数个数 B、参数的类型 C、函数名称 D、函数的类型4、下列对重载函数的描述中,(A )是错误的。A、重载函数中不允许运用缺省参数;注:可以运用,但要求不存在二义性。B、重载函数中编译系统依据参数表进行选择;C、不要运用重载函数来描述毫无相干的函数;D、构造函数重载将会给初始化带来多种方式。5、下列有关重载函数的说法中正确的是()A.重载函数必需具有不同的返回值类型B.重载函数参数个数必需相同C.重载函数必需有不同的形参列表D.重载函数名可以不同答案:C解析:函数的重载必需函数名相同而形参类型或个数不同,与返回值无关。继承1、在C+中继承方式有几中(C )A. 1 B. 2 C. 3 D. 42、继承的状况下,基类成员在派生类中的访问权限(A )A、受限制 B、保持不变C、受爱惜D、不受爱惜3、C+类体系中,不能被派生类继承的有(B )A、转换函数B、构造函数C、虚函数I)、静态成员函数4、在C+中,数据封装要解决的问题是(D )A、数据规范化排列B、数据高速转换C、避开数据丢失D、切断了不同模块之间的数据的非法运用5、继承机制的作用是(C )A、信息隐藏 B、数据封装 C、定义新类 D、数据抽象6、关于多继承二义性的描述中,(C )是错的。A、一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二 义性;B、解决二义性的最常用的方法是对成员名的限定法;C、基类和派生类中同时出现的同名函数,也存在二义性问题;D、一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该基类成员 进行访问时,也可能出现二义性。类的概念1、在下列关于类概念的各描述中,A是错误的。A)类就是C语言中的结构体类型;B)类是具有共同行为的若干对象的统一描述体;C)类是创建对象的样板;D)类是抽象数据类型的实现。2、类是逻辑上相关的 函数与数据的封装。特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。3、下面有关类说法不正确的是(C )A、一个类可以有多个构造函数B、一个类只有一个析构函数C、析构函数须要指定参数D、在一个类中可以说明具有类类型的数据成员类(函数)模版1、类模板的运用事实上是将类模板实例化成一个具体的(A )A、类 B、对象 C、函数 I)、模板类2、实现两个相同类型数加法的函数模板的声明是()A. add(T x, T y)B. T add(x, y)C. T add (T x, y)D. T add (T x, T y)答案:D解析:实现两个相同类型数加法结果应当和操作数具有相同类型。进行加法运算后结果也 是和参数具有相同类型,须要返回值。A无返回值时要用void, B形参无类型,C形参y没有类 型,所以选择D项。面对对象1、不是属于面对对象程序设计的特性BA.抽象性B.数据相关性C.多态性D.继承性内存支配1、动态内存支配的主要目的是 BB.正确合理的运用内存D.提高程序的可维护性A.使程序按动态联编方式运行C.提高程序的运行速度内联函数1、一个函数功能不太困难,但要求被频繁调用,选用(A )A、内联函数B、重载函数C、递归函数 D、嵌套函数2、在(C )状况下适宜接受inline定义内联函数。A、函数体含有循环语句B、函数体含有递归语句C、函数代码少、频繁调用D、函数代码多、不常调用3、一个函数功能不太困难,但要求被频繁调用,则应把它定义为()月.内联函数B.重载函数C.递归函数D.嵌套函数答案:A解析:内联函数特征代码少,频繁调用,执行效率高。重载函数解决统一接口的问题;递 归是子程序调用,程序调用要耗费很多空间和时间,循环/迭代都比递归有效率得多,递归 只是从形式上,逻辑比较简洁。嵌套函数即反复调用,速度较慢。所以选择A项。new运算符1、关于new运算符的下列描述中,(D )是错误的。A、它可以用来动态创建对象和对象数组;B、运用它创建的对象或对象数组可以运用运算符delete删除;C、运用它创建对象时要调用构造函数;D、运用它创建对象数组时必需指定初始值;派生类1、运用派生类的主要缘由是(A )B.提高程序的运行效率D.实现数据的隐藏A.提高代码的可重用性C.加强类的封装性2、假设已经定义好了类student,现在要定义类derived,它是从student私有派生的,则 定义类derived的正确写法是(D )A.classderived :studentprivate/B.classderived :studentpublic /-C.classderived :publicstudent /D. class derived : private student /3、派生类的对象对它的基类成员中(A)是可以访问的。A.公有继承的公有成员;B.公有继承的私有成员;C.公有继承的爱惜成员;D.私有继承的公有成员。4、可以用p.a的形式访问派生类对象p的基类成员a ,其中a是(D )A、私有继承的公有成员B、公有继承的私有成员C、公有继承的爱惜成员D、公有继承的公有成员 5、在公有派生状况下,有关派生类对象和基类对象的关系,不正确的叙述是(C )A、派生类的对象可以赋给基类的对象B、派生类的对象可以初始化基类的引用C、派生类的对象可以干脆访问基类中的成员 D、派生类的对象的地址可以赋给指向基 类的指针 6、下列对派生类的描述中,(D )是错的。A、一个派生类可以作另一个派生类的基类; B、派生类至少有一个基类;C、派生类的成员除了它自己的成员外,还包含了它的基类的成员;D、派生类中继承的基类成员的访问权限到派生类保持不变。7、对基类和派生类的关系描述中,(B )是错的。A、派生类是基类的具体化;B、派生类是基类的子集;C、派生类是基类定义的持续;D、派生类是基类的组合。8、派生类的构造函数的成员初始化列中,不能包含(C )。A、基类的构造函数;用于基类子对象的构造(初始化)B、派生类中子对象的初始化;C、基类的子对象初始化; 基类子对象的初始化,可以!D、派生类中一般数据成员的初始化。static成员1、下列静态数据成员特性中,D是错误的。A)说明静态数据成员时前边要加修饰符static;B)静态数据成员要在类体外进行初始化;C)引用静态数据成员时,要在静态数据成员名前加类名和作用域辨别符;D)静态数据成员不是全部对象共有的。2、下面有关静态成员函数的描述中,正确的是(B )A.在静态成员函数中可以运用this指针B.在建立对象前,就可以为静态数据成员赋值C.静态成员函数在类外定义是,要用static前缀D.静态成员函数只能在类外定义、3、下面对静态数据成员的描述中,正确的是(C )A类的不同对象有不同的静态数据成员值B类的每个对象都有自己的静态数据成员C静态数据成员是类的全部对象共享的数据D静态数据成员不能通过类的对象调用、4、静态成员函数不能说明为(C )A、整型函数 B、浮点函数 C、虚函数 D、字符型函数5、静态成员函数没有(B )A、返回值B、this指针C、指针参数D、返回类型6、静态成员函数仅能访问(D )oA、静态的数据成员B、非静态的成员函数C、非静态的数据成员D、以上都不对数组1、下列关于对象数组的描述中,(D)是错的。A、对象数组的下标是从0起先的;B、对象数组的数组名是一个常量指针:C、对象数组的每个元素是同一个类的对象;D、对象数组只能赋初值,而不能被赋值。2、下列定义中,(B )是定义指向数组的指针p。A、int *p5; 指针数组 B> int(*p)5; 行数组指针C、(int*)p5 ;D> int *p口; 指针数组实参1、下面哪种定义方式是正确的,并且使得p可以作为函数void f ( A* const pp);的实参: A(A) A * p = new A;(B) A a; A* p = a;(C) const A* p 二 new A;(D) A a; const A* p 二 a;2、运用地址作为实参传给形参,下列说法正确的是()月.实参是形参的备份B.实参与形参无联系C.形参是实参的备份D.实参与形参是同一对象答案:D解析:地址作为实参,表示实参与形参代表同一个对象。假照实参是数值,形参也是一般 变量,此时形参是实参的备份。所以选择D项。私有数据成员1、下面关于访问类A的私有数据成员的说法,错误的是:C(A)类A的友元函数可以访问类A的私有成员。(B)类A的友元类中的非静态成员函数可以访问类A的私有成员。(0类A的嵌套类中的非静态成员函数可以访问类A的私有成员。(D)类A中的非静态成员函数可以访问类A的私有成员。输入输出1、在C+中,运用流进行输入输出,其中用于屏幕输入() A. cinB. cerr C. cout D. clog 答案:A 解析:(1)标准输入流cin: istream类的对象。(2)标准输出流cout: ostream类的对象。 (3)非缓冲型标准出错流cenn ostream类的对象。(4)缓冲型标准出错流clog: ostream类的 对象this指针1、下列关于this指针的说法,哪个是正确的:D(A) this指针确定指向常量型数据(B) this指向的数据不行更改(C)静态成员函数中也可以访问this指针 (D) this指针本身可干脆作为成员函数的返 回值2、关于this指针运用说法正确的是()人保证每个对象拥有自己的数据成员,但共享处理这些数据的代码保证基类私有成员在子类中可以被访问。C.保证基类爱惜成员在子类中可以被访问。,保证基类公有成员在子类中可以被访问。答案:A解析:this指针是隐藏的,可以运用该指针来访问调用对象中的数据。基类的成员在派生 类中能否访问,与继承方式有关,与this没有关系。所以选择A项。3、this指针存在的目的是()月,保证基类私有成员在子类中可以被访问保证基类爱惜成员在子类中可以被访问C.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码。,保证基类公有成员在子类中可以被访问答案:C解析:C+要求函数在被调用之前,应当让编译器知道该函数的原型,以便编译器利用函数 原型供应的信息去检查调用的合法性,强制参数转换成为适当类型,保证参数的正确传递。 对于标准库函数,其声明在头文件中,可以用include宏叮嘱包含这些原型文件;对于用户自定 义函数,先定义、后调用的函数可以不用声明,但后定义、先调用的函数必需声明。一般为增加 程序的可理解性,常将主函数放在程序开头,这样须要在主函数前对其所调用的函数一一进行声 明,以消退函数所在位置的影响。所以选择C项。虚基类1、设置虚基类的目的是 DA.简化程序B.使程序按动态联编方式运行C.提高程序运行效率D.消退二义性析构函数1、对于随意一个类,析构函数的个数最多为(R )A、 0 B、 1 C、 2 D、 32、( D )是析构函数的特征。A、析构函数可以有一个或多个参数;B、析构函数名与类名不同;书目AASCII4B变量的基本要素4标识符4Cconst5C+与c语言的关系5c向C+的转变5c与C+的共性5抽象类6冲突解决6成员函数6拷贝构造函数7存储字节7D代码运行流程7多态8堆运算符8delete 运算符8动态联编9Ffor循环9封装9返回类型10G构造函数10H函数重载11J继承12L类的概念13c、析构函数的定义只能在类体内;D、一个类中只能定义一个析构函数;3、类的析构函数的作用是(D )A、一般成员函数B、类的初始化C、对象的初始化D、删除对象4、类的析构函数是在(C )调用的。A、类创建时B、创建对象时C、删除对象时D、不自动调用5、定义析构函数时,应当留意(C )。A、其名与类名完全相同 B、返回类型是void类型C、无形参,也不行重载 D、函数体中必需有delete语句虚函数1、通过(A )调用虚函数时,接受动态束定。A、对象指针B、对象名C、成员名限定D、派生类名2、假如一个类至少有一个纯虚函数,那么就称该类为(A )A抽象类 B虚基类 C派生类 D以上都不对3、在派生类中重新定义虚函数时必需在(A )方面与基类保持一样。A、参数类型B、参数名字C、操作内容 D、赋值4、关于虚函数的描述中,(C )是正确的。A、虚函数是一个static类型的成员函数B、虚函数是一个非成员函数C、基类中说明白虚函数后,派生类中将其对应的函数可不必说明为虚函数D、派生类的虚函数与基类的虚函数具有不同的参数个数和类型5、若类A的一个对象所占的内存空间中包含虚函数表的入口地址,则:C(A)类A不能有静态数据成员(B)类A中公有的成员函数确定是虚的(0类A中至少有一个成员函数是虚的(D)类A的析构函数确定是虚的6、以下基类中的成员函数表示纯虚函数的是()A. virtual void tt()=0B. void tt (int)=0C. virtual void tt (int)D. virtual void tt (int)答案:A解析:当在基类中不能为虚函数给出一个有意义的实现时,可以将其声明为纯虚 函数,实现由派生类完成。格式:virtual函数返回类型说明符X函数名(参数表)=0;。形参1、在函数定义中的形参属于()月.全局变量B.局部变量C.静态变量D.寄存器变量答案:B解析:形参或函数中定义的变量都是局部变量。在函数外定义的变量是全局变量。形参只能 用局部变量,频繁运用的变量可以声明为寄存器变量,形参不能运用静态变量或寄存器变量。2、C+语言中全部在函数中定义的变量,连同形式参数,都属于()A.全局变量B.局部变量C.静态变量D.函数答案:B解析:变量存储类可分为两类:全局变量和局部变量。(1)全局变量:在函数外部定义的变量称为全局变量,其作用域为:从定义变 量的位置起先到源程序结束。运用全局变量降低了程序的可理解性,软件工程学提倡尽量避开运 用全局变量。(2)局部变量:在函数内部定义的变量称为局部变量,其作用域为:从定义变 量的位置起先到函数结束。局部变量包含自动变量(auto)静态变量(static)以及函数参数。 形参不能是静态的。所以选择B项。友元函数1、友元函数 BB.没有this指针A.可以被声明为constC.可以用类名或对象名来调用D.只能用对象名来调用2、下面有关友员函数的描述中,真确的说法是(A )A.友员函数是独立于当前类的外部函数B. 一个友员函数不行以同时定义为两个类的友员函数C.友员函数必需在类的外部进行定义D.在类的外部定义友员函数时必需加上friend关键字3、友员的作用之一是(A )A.提高程序的运行效率B.加强类的封装C.实现数据的隐藏性D.增加成员函数的种类4、友元关系不能(A )A、继承B、是类与类的关系C、是一个类的成员函数与另一个类的关系D、提高程序的运行效率 5、假如类A被说明成类B的友元,则(D )B、类B的成员即类A的成员D、类B不确定是类A的友元A、类A的成员即类B的成员C、类A的成员函数不得访问类B的成员6、已知类A是类B的友元,类B是类C的友元,则()月.类A确定是类C的友元B.类C确定是类A的友元C.类C的成员函数可以访问类B的对象的任何成员D.类A的成员函数可以访问类B的对象的任何成员答案:C解析:友元说明方法如下:friend?(类名;/友元类类名运用友元可以访问全部成员:友元关系不能被继承。友元关系是单向的,不具有交换性。所以,B项和D项错误。友元关系不具有传递性。所以,A项错误。运算符重载1、关于运算符重载的不正确的描述是 AA.运算符重载函数是友元函数B.体现了程序设计的多态性C.增加新的运算符D.使运算符能对对象操作2、下列关于运算符重载的描述中,(D )是正确的。A、运算符重载可以变更操作数的个数;B、运算符重载可以变更优先级;C、运算符重载可以变更结合性;D、运算符重载不行以变更语法结构。3、运算符重载函数不行以是(D )。A、成员函数;B、友元函数;C、内联函数;I)、带缺省参数的函数。预处理1、预处理叮嘱在程序中都是以(B )符号开头的。A. * B. # C. &1). 指针变量1若有定义int a=3, *p=&a ;贝ij *p的值是 BB) 3D)无意义A)常量a的地址值C)变量p的地址值2、若有定义:int x , *p ;A) *p=*x B) *p=&x则正确的赋值表达式是 DC) p二xD) p=&x3、要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定 义为(D )A、 const char *p= " ABCD ";B> char const *p= " ABCD ”;C、 char *const p= " ABCD ”;D> const char * const p= " ABCD ”;4、下列关于指针的操作中,错误的是(D )A、两个同类型的指针可以进行比较运算B、可以用个空指针赋给某个指针C、一个指针可以加上两个整数之差D、两个同类型的指针可以相加5、已知fl (int)是类A的公有成员函数,p是指向成员函数fl()的指针,接受(B ) 是正确的。A、p = fl; B、p=A:fl; C> p=A:fl(); D> p = fl();6、已知:p是一个指向类A数据成员m的指针,Al是类A的一个对象。假如要 给m赋值为5, ( C )是正确的。A、Al. p = 5; B、Al->p = 5; C、Al. *p = 5; D> *A1. p = 5;7、下列说明中const char* ptr; ptr应当是(C )A、指向字符常量的指针;B、指向字符的常量指针;C、指向字符串常量的指针;D、指向字符串的常量指针;注:常量的指针一指针指向的数据是常量;常量指针一指针本身是常量。8、已知I: p是一个指向类A数据成员m的指针,A1是类A的一个对象。假如要给m赋值为5,正 确的是()A. Al. p=5;B. Al->p=5;C. Al.*p=5;D. *Al.p=5;答案:C解析:A中p是指针即地址,错误;B选项中Al不是指针不能运用指向运算符-,错误;“*”比”级别要高,所以D选项*Al.p=5相当于(*Al).p=5;错误。另外涉及到指向成员 函数时留意以下几点:指向成员函数的指针必需于其赋值的函数类型匹配的三个方面:(1)参数类型和个数;(2) 返回类型;(3)它所属的类类型。成员函数指针的声明:指向short型的Screen类的成员的指针定义如下:short Screen:* ps_Screen;ps_Screen可以用_height的地址初始化如下:shortScreen:*ps_Screen=&Screen:_height;类成员的指针必需总是通过特急的对象或指向改类型的对象的指针来访问。是通过运用两 个指向成员操作符的指针(针对类对象和引用的以及针对指向类对象的指针的->*)。9.对于int *pa 5;的描述,正确的是()pa是一个指向数组的指针,所指向的数组是5个int型元素B. pa是一个指向某个数组中第5个元素的指针,该元素是int型变量C. pa 5表示某个数组的第5个元素的值D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针答案:D解析:指针数组:数组元素都是相同类型的指针,相同类型的指针是说指针所指向的对象类型是相同的。例如,语句int *pa 5;定义了一个指针数组。在指针数组的 定义中有两个运算符:*和,运算符口的优先级高于*,所以*pa 5等价于*(pa 5), pa 5表示一个数组,而*表示后面的对象为指针变量,合在一起*pa 5表示一个指针数组。该数组包含5个元素,每个元素都是指向int型的指针。所以选择D选项。指针运算1、下列关于指针运算的各叙述中,不正确的叙述是DoA)指向同一数组的两个指针,可以进行相等或不等的比较运算;B)可以用一个空指针赋值给某个指针;C)指向数组的指针,可以和整数进行加减运算;D)指向同一数组的两个指针,可以进行有意义的相加运算。注释1、在C+中,有两种给出注释的方法。一种是沿用C语言的注释符,即/*/O另一种是从它起先,直到它所在行尾的字符都为注释的注释符,即作用域运算符1、作用域运算符的功能是(D )。A、标识作用域的级别的;B、指出作用域的范围的;C、给定作用域的大小的;D、标识某个成员是属于哪个类的。类(函数)模版13M面对对象14N内存支配14内联函数14new运算符15P派生类15Sstatic 成员16数组17实参17私有数据成员18输入输出18Tthis 指针18X虚基类19析构函数19虚函数20形参21Y友元函数21运算符重载22预处理23Z指针变量23指针运算25注释25作用域运算符25ASCII6' - '3';后,n 的值D)编译出错1、'A'的 ASCII 码为 65, n 为 int 型,执行 n = 'A' +为 BoA) DB) 68 C)不确定的值变量的基本要素1 > 在 C+值 O中,变量的三个基本要素是指:变量名、变量类型和变量标识符1、可用作C+语言用户标识符的一组标识符是(B)oA. void define +W0RDB. a3_b3_123 YNC. for -abc CaseD. 2a DO sizeof2、依据标识符的要求,(A)符号不能组成标识符。A.连接符B,下划线C.大小写字母D.数字字符3、下列变量名中,(A )是合法的。D A+aA CHINA B byte-size C doubleconst1、在C+函数的形参前加const关键字,是为了提高函数的 CA.数据封装性B.可理解性C.可维护性 D.可重用性C+与C语言的关系1、关于C+与C语言的关系的描述中,(D)是错误的。A. C语言是C+的一个子集;B. C语言与C+是兼容的;C. C+对C语言进行了一些改进;D. C+和C语言都是面对对象的C向C+的转变1、C+对C语言作了很多改进,下列描述中(D )使得C语言发生了质变,从面对过程变 成了面对对象。A、增加了一些新的运算符;B、允许函数重载,并允许设置缺省参数;C、规定函数说明必需用原型;D、引进了类和对象的概念;C与C+的共性1、下列特性中,C与C+共有的是(D )A、继承 B、封装 C、多态性 D、函数定义不能嵌套2、对丁 C/C+语言的函数,下列叙述中正确的是(A )oA、函数的定义不能嵌套,但函数调用可以嵌套B、函数的定义可以嵌套,但函数调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套3、关于C+与C语言关系的描述中,(D )是错误的。A、C语言是C+语言的一个子集B、C语言与C+语言是兼容的C、C+语言对C语言进行了一些改进D、C+语言和C语言都是面对对象的抽象类1、下列描述中,(D )是抽象类的特性。A、可以说明虚函数;B、可以进行构造函数重载;C、可以定义友元函数;D、不能说明其对象。2、关于纯虚函数和抽象类的描述中,(C )是错误的。A、纯虚函数是一种特殊的虚函数,它没有具体的实现;B、抽象类是指具有纯虚函数的类;C、一个基类中说明有纯虚函数,该基类的派生类确定不再是抽象类;D、抽象类只能作为基类来运用,其纯虚函数的实现由派生类给出。冲突解决1、C+中解决命名冲突的机制是:D(D)名字空间(A)虚基类 (B)虚函数 (C)函数重载成员函数1、下列不是描述类的成员函数的是(C )A、构造函数B、析构函数C、友元函数D、拷贝构造函数2、关于成员函数特征的下述描述中,(A )是错误的。A、成员函数确定是内联函数;(注:可以是内联函数,也可以是外联函数)B、成员函数可以重载;C、成员函数可以设貉参数的缺省值;D、成员函数可以是静态的。3、下面关于类的成员函数描述不正确的是:A(A)静态成员函数内可以干脆访问类的非静态成员数据(B)静态成员函数内可以干脆访问类的静态成员数据(0非静态成员函数可以干脆访问类的非静态成员数据(D)非静态成员函数可以干脆访问类的静态成员数据(全局成员)拷贝构造函数通常,拷贝构造函数的参数是(C )A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名2、假定AB为一个类,贝|( C )为该类的拷贝构造函数的原型说明。A. AB(AB x) ; B. AB(int x) ; C. AB(AB& x) ; D. void AB(AB& x);3、类MyA的拷贝初始化构造函数是()A . MyA ()B. MyA(MyA*)C. MyA(MyA&)D. MyA(MyA)答案:C解析:复制即拷贝构造函数运用对象的引用作形参,防止临时产生一个对象,A无参构造函 数,B是指针作为形参,D项是对象,所以选择C项。存储字节1、存储以下数据,占用存储字节最多的是(D)oA. 0 B. 'O' C. "0" D. 0.0代码运行流程1、C+程序从上机到得到结果的几个操作步骤依次是(B )。A.编译、编辑、连接、运行 B.编辑、编译、连接、运行C.编译、运行、编辑、连接 D.编辑、运行、编辑、连接多态1、实现运行时的多态性用(D )A、重载函数 B、构造函数 C、析构函数 D、虚函数2、所谓多态性是指()A.不同的对象调用不同名称的函数B.不同的对象调用相同名称的函数C. 一个对象调用不同名称的函数D. 一个对象调用不同名称的对象答案:B解析:多态性有两种静态多态性和动态多态性,静态多态性是指调用同名函数,由于参数 的不同调用不同的同名函数;动态多态性是指不同对象调用同名函数时,由于对象不同调用 不同的同名函数。多态性确定具有相同的函数名,所以选择B项。3、有关多态性说法不正确的是()A. C+语言的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现D.实现运行时多态性的机制称为动态多态性答案:C解析:多态性分为静态的和动态的。静态通过函数的重载来实现,动态是通过基类指针或 基类引用和虚函数来实现的。所以错误的是C项。堆运算符1、关于堆运算符的下列描述中,(C )是错误的。A、运用堆运算符可以动态建立或删除对象;B、new运算符创建对象时要调用构造函数;C、可以在运用new口创建数组时,为每个数组元素指定初始值;D、delete运算符可以作用于空指针;delete运算符1、关于delete运算符的下列描述中,(C )是错的。A、它必需用于new返回的指针;B、它也适用于空指针;C、对一个指针可以运用多次该运算符;D、指针名前只用一对方括号符,不管所删除数组的维数。动态联编1、关于动态联编的下列描述中,(D )是错误的。A、动态联编是以虚函数为基础的;B、动态联编是在运行时确定所调用的函数代码的;C、动态联编调用函数操作是指向对象的指针或对象引用;D、动态联编是在编译时确定操作函数的for循环for (1、对A) for (B) for (C) for (D) for (表达式1 ;表达式1 ;表达式1 ;表达式1 ;表达式1 ;表达式3 )可理解为0 ;表达式3 )1 ;表达式3 )表达式1 ;表达式3 )表达式3 ;表达式3 )封装1、关于封装,下列说法中不正确的是(D )。A.通过封装,对象的全部属性和操作结合在一起,形成一个整体B.通过封装,一个对象的实现微小环节被尽可能地隐藏起来(不行见)C.通过封装,每个对象都成为相对独立的实体D.通过封装,对象的属性都是不行见的2、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实 体也就是(A)。A.类B.对象C.函数体 D.数据块