c期末练习题答案.doc

上传人:小** 文档编号:15382845 上传时间:2020-08-09 格式:DOC 页数:21 大小:152.50KB
返回 下载 相关 举报
c期末练习题答案.doc_第1页
第1页 / 共21页
c期末练习题答案.doc_第2页
第2页 / 共21页
c期末练习题答案.doc_第3页
第3页 / 共21页
点击查看更多>>
资源描述
C+程序设计练习题一、选择题1. 有函数f定义如下:int f(int a = 1, int b = 2, int c = 3) return a + b + c;下列说法中错误的是(D)。A函数调用f()的结果为6。 B函数调用f(f(f()的结果为16。C函数调用f(f(), f()的结果为15 D函数调用f(f(), f(f()的结果为21。2. C+中,关于参数默认值的描述正确的是( B)。A.只能在函数定义时设置参数默认值 B.设置参数默认值时,应当从右向左设置C.设置参数默认值时,应当全部设置 D.设置参数默认值后,调用函数不能再对参数赋值3.如果类A被说明成类B的友元,则(D) A.类A的成员即类B的成员 B.类B的成员即类A的成员 C.类A的成员函数不得访问类B的成员 D.类B不一定是类A的友元4、如下是某同学定义的类A,则其中有(B)处错误。class A int a = 1;void A();A(void); A2B3C4D55、针对下列类型定义,可以出现在main函数中的语句有(A)。class Date private:int year, month, day;ADate d; BDate:year = 1; CDate d = 2009, 1, 1; Dcout month;6、有程序如下,下列说法中错误的是(B)。class RMB int yuan, jiao, fen;public:RMB(int y = 0, int j = 0, int f = 0) yuan = y, jiao = j, fen = f;RMB() cout yuan : jiao : fen;int main() RMB a2, b(10, 20, 30), c(b);A20:10:30不可能是程序的输出结果。 B析构对象c时输出结果是0:0:0。C0:0:0会在输出结果中出现两遍。 D对象a0最后析构。7、类A是自定义类型,下列说法中错误的是(C)。A* a = new A;A* b = new A(a);delete a;delete b;A构造堆对象a时会调用类A的默认构造函数。 B构造堆对象b时会调用类A的拷贝构造函数。C堆对象a先构造,所以它后析构。 D释放指针b所指内存时,会调用类A的析构函数。8、a、b、c是类T的对象,为计算表达式c = a + b,必须(C )。A以成员函数形式重载加法运算符+。 B以友元函数形式重载赋值运算符=。C以友元函数形式重载加法运算符+。 D以T作为加法运算符函数的返回类型。9.执行如下的程序段后,输出结果是(A )。 cout.fill(*); cout.width(6); cout.fill(#); cout 123 abc11.下列程序中,访问出错的是(B)。class A private:int x;protected:int y() x = 1;/ Apublic:int z;class B : public A public:void u() cout x;/ B;int main() B b;b.z = 1;/ Cb.u();/ D12.有类型定义如下,则下列说法中错误的是(B)。class Object ;class A Object oa;class B : public A Object ob;A构造类B的对象时会首先调用类Object的构造函数。B对语句B b;的执行会先后引发6次函数调用。C析构类B的对象时,类B的析构函数在类A的析构函数之前调用。D析构类A的对象时会最后调用类Object的析构函数。13. 在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是(A) A.派生类的对象可以直接访问基类中的成员 B.派生类的对象可以初始化基类的引用 C.派生类的对象可以赋给基类的对象 D.派生类的对象的地址可以赋给指向基类的指针14.下列( D)行的输出结果是B:v。class A public:void f() cout A:f endl;virtual void v() cout A:v endl;class B : public A public:void f() cout B:f endl;virtual void v() cout B:v f();/ Apa-v();/ BB b; pa = &b;pa-f();/ Cpa-v();/ D15.以下(C )成员函数表示纯虚函数。 A.virtual int vf(int); B.void vf(int)=0; C.virtual void vf()=0; D.virtual void vf(int)17.下列程序段中,ofs是ofstream类的对象,ifs是ifstream类的对象,c是char型变量,则执行结果是(B)。while (ifs.get(c)ofs.put(c);A把一个文件的第1个字节写入到另一个文件中 B把一个文件的内容全部写入到另一个文件C仅仅把字符c写入到一个文件中 D把两个文件的内容合并到一起4.下面说法正确的是(B) A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C.类的内联函数必须在类体内定义 D.类的内联函数必须在类体外通过加关键字inline定义18.下列(B)循环能够把26个小写字母以文本方式写入文件中。int main() int a;ofstream ofs(data.txt);a = a; while (a = z) ofs a+;/ Aa = a; while (a = z) ofs.put(a+);/ Ba = a; while (a = z) / Cofs.write(const char*)&a, sizeof(a);+a;a = a; while (a = z) cout char(a+);/ Dofs.close();19.假定AB为一个类,则执行“AB a(4), b5, *p2;”语句时,自动调用该类构造函数的次数为( A )。 A. 6 B. 7 C. 9 D. 11 20.下面叙述错误的是( A)。 A. 基类的protected成员在派生类中仍然是protected B. 基类的protected成员在public派生类中仍然是protected的 C. 基类的protected成员在private派生类中是private的 D. 基类的protected成员不能被派生类的对象访问 21. 多继承派生类构造函数构造对象时,( B)被最先调用。 A. 派生类自己的构造函数 B. 虚基类的构造函数 C. 非虚基类的构造函数 D. 派生类中子对象类的构造函数 22关键字 _C_ 说明对象或变量初始化后不会被修改。 A. static B. public C. const D. inline23.在C+中,函数原型不能标识( D) A.函数的返回类型 B.函数参数的个数 C.函数参数类型 D.函数的功能 24.以下能正确定义数组并正确赋初值的语句是D A. int N=5,bNN; B. int a2=1,3,4,5; C. int c2=1,2,3,4; D. int d32=1,2,3,4;25.对于动态分配内存空间描述正确的是( D ) A使用new运算符分配的内存空间的长度必需是常量 Bdelete运算符可以释放动态的存储空间和静态的存储空间 C由new分配的内存空间是不连续的 Ddelete运算符只能释放由new分配的动态存储空间26.C+中解决命名冲突的机制是:D A虚基类 B虚函数 C函数重载 D名字空间27.对于一个功能不太复杂,并且要求加快执行速度,选用(A )合适。A.内联函数 B.重载函数 C.递归调用 D.嵌套调用 28在一个源文件中定义的全局变量的作用域为( C ) A. 本程序的全部范围 B. 本函数的全部范围 C. 从定义该变量的位置开始到本文件结束 D. 以上说法都不正确 5.对于任意一个类,析构函数的个数最多为(B ) A.0 B.1 C.2 D.3 29. 假定AB为一个类,则执行ABx;语句时将自动调用该类的(B) A.有参构造函数 B.无参构造函数 C.拷贝构造函数 D.赋值构造函数30.类型修饰符unsigned不能修饰(D) A.char B.int C.longint D.float 31.可以用p.a的形式访问派生类对象p的基类成员a,其中a是(D)A.私有继承的公有成员 B.公有继承的私有成员 C.公有继承的保护成员 D.公有继承的公有成员 32.下列程序的输出结果是(B)void f(int& i, int& j) int t(i);i = j, j = t;cout i t j t;int main() int a = 5, b = 8;f(b, a);cout a t b endl;A8558B5885 C5858D858533.对于类定义 class A public: virtual void func1( ) void func2( ) ; class B:public A public: void func1( )coutclass B func 1end1; virtual void func2( )coutclass B func 2end1; ; 下面正确的叙述是( C ) A. A:func2( )和B:func1( )都是虚函数 B. A:func2( )和B:func1( )都不是虚函数C. B:func1( )是虚函数,而A:func2( )不是虚函数 D. B:func1( )不是虚函数,而A:func2( )是虚函数34.在下列函数原型中,可以作为类AA构造函数的是( D )。 A.void AA(int); B.int AA(); C.AA(int)const; D.AA(int);35.将两个字符串连接起来组成一个字符串时,选用( C)函数。 A. strlen() B. strcap() C. strcat() D. strcmp()36.如果类A被说明成类B的友元,则(D) A.类A的成员即类B的成员 B.类B的成员即类A的成员 C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元37.用new运算符创建一个含10个元素的一维整型数组的正确语句是(C )。 A. int *p=new a10; B. int *p=new float10; C. int *p=new int10; D. int *p=new int10=1,2,3,4,538.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是(C)A.派生类的对象可以赋给基类的对象 B.派生类的对象可以初始化基类的引用 C.派生类的对象可以直接访问基类中的成员 D.派生类的对象的地址可以赋给指向基类的指针40. 面向对象方法的多态性是指(B)。 A. 一个类可以派生出多个特殊类 B. 一个对象在不同的运行环境中可以有不同的变体 C. 针对一消息,不同的对象可以以适合自身的方式加以响应 D. 一个对象可以是由多个其他对象组合而成的41.在C+程序中,对象之间的相互通信通过(B) A.继承实现 B.调用成员函数实现 C.封装实现 D.函数重载实现 42面向对象软件开发中使用的OOA表示( A)。 A. 面向对象分析 B. 面向对象设计 C. 面向对象语言 D. 面向对象方法43.在inta=3,int*p=&a;中,*p的值是(D) A.变量a的地址值 B.无意义 C.变量p的地址值 D.3 44.使用重载函数编程序的目的是(A) A. 使用相同的函数名调用功能相似的函数 B. 共享程序代码 C. 提高程序的运行速度 D.节省存储空间45.在多文件结构的程序中,通常把类的定义单独存放于(D)中。 A. 主文件 B. 实现文件 C. 库文件 D. 头文件 46.可以用p.a的形式访问派生类对象p的基类成员a,其中a是(D)A.私有继承的公有成员 B.公有继承的私有成员 C.公有继承的保护成员 D.公有继承的公有成员47C+语言中函数返回值的类型是由( C )决定的? A. return语句中的表达式类型 B. 调用该函数的主调函数类型 C. 定义函数时所指定的函数类型 D. 上说法都不正确48当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的(D )。 A. 只能是公有成员 B. 只能是保护成员 C. 只能是除私有成员之外的任何成员 D. 具有任何权限的成员 49下正确的函数原型为(D) A. func (int x ; int y); B. void (x , y); C.void (int x , y); D. void func (int , int);50 在一个源文件中定义的全局变量的作用域为( C ) A. 本程序的全部范围 B. 本函数的全部范围C. 从定义该变量的位置开始到本文件结束 D. 以上说法都不正确51.应在下列程序划线处填入的正确语句是( C )。 class Base public: void fun()coutBase:funendl; ;class Derived:public Base void fun() /显示调用基类的函数fun() coutDerived:funfun();52.C+中,关于参数默认值的描述正确的是(A )。A.只能在函数定义时设置参数默认值 B.设置参数默认值时,应当从右向左设置C.设置参数默认值时,应当全部设置 D.设置参数默认值后,调用函数不能再对参数赋值53如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为(A )。 A. a.operator+(b) B. b.operator+(a) C. operator+(a,b) D. operator(a+b)54.实现运行时的多态性要使用( D )。 A.重载函数 B.构造函数 C.析构函数 D.虚函数 55对数组名作函数的参数,下面描述正确的是(B )。A.数组名作函数的参数,调用时将实参数组复制给形参数组。B.数组名作函数的参数,主调函数和被调函数共用一段存储单元。C.数组名作参数时,形参定义的数组长度不能省略。D.数组名作参数,不能改变主调函数中的数据。56对于一个功能不太复杂,并且要求加快执行速度,选用(A )合适。A.内联函数 B.重载函数 C.递归调用 D.嵌套调用58C+中的虚基类机制可以保证:( D)。 A. 限定基类只通过一条路径派生出派生类 B. 允许基类通过多条路径派生出派生类,派生类也就能多次继承该基类 C. 当一个类多次间接从基类派生以后,派生类对象能保留多份间接基类的成员 D. 当一个类多次间接从基类派生以后,其基类只被一次继承59.用重载函数编程序的目的是(A ) A.使用相同的函数名调用功能相似的函数 B. 共享程序代码 C. 提高程序的运行速度 D. 节省存储空间60.在C+程序中,对象之间的相互通信通过(B) A.继承实现 B.调用成员函数实现 C.封装实现 D.函数重载实现61、下列关于C+标识符的命名不合法的是CA. Pad B. name_1 C. A#bc D. _a1262、若有以下类型标识符定义: (D)int x=2; char w=a; float y=23.45f; double z=45.6712;则表达式w*x+y-z的结果类型是A. float B. char C. Int D. double 63、若有int x=10,y=20,z=30; 则执行下面语句后,x的值是Bif(xy)z=x; x=y; y=z; A. 10 B. 20 C. 30 D. 064、循环语句whlie(int i=0 )i-;的循环次数是AA. 0 B. 1 C. 5 D. 无限65、一个函数无返回值时,应选择的说明符是CA. static B. extern C. void D. 无说明符66、对重载函数形参的描述中,错误的是DA. 参数的个数可能不同 B. 参数的类型可能不同C. 参数的顺序可能不同 D. 参数的个数、类型、顺序都相同,只是函数的返回值类型不同67、以下能正确定义数组并正确赋初值的语句是DA. int N=5,bNN; B. int a2=1,3,4,5;C. int c2=1,2,3,4; D. int d32=1,2,3,4;68、下列给字符数组进行的初始化中,不正确的是DA. char s1=abcd; B. char s23=x,y,0;C. char s3=a,x,y,0; D. char s46=xyz,mnp;69、通常的拷贝构造函数的参数是CA 某个对象名 B某个对象成员名 C 某个对象的引用 D某个对象的指针名70、关于构造函数特点的描述中,错误的是AA. 定义构造函数必须指出类型 B. 构造函数的名字与该类的类名相同C. 一个类中可定义0至多个构造函数 D. 构造函数是一种成员函数71、下面程序的运行结果为 D +using namespace std;后选C#include int add(int a,int b);void main() extern int x,y;coutadd(x,y)_。11、已知有定义“int x, a=5,7,9, *pa=a;”,在执行“x=+*pa;”语句后,x的值是_6_,*(pa+1)的值为_7_。12.若希望用一个已有对象来构造另一个同类型的对象,可以使用 拷贝构造函数 来实现。13、假定AB为一个类,则类定义体中的“AB(AB& x);”语句为该类_拷贝构造函数_的原型语句,而“operator=(AB& x);”为该类_赋值重载函数_的原型语句。14、为了访问某个类的私有数据成员,必须在该类中声明该类的 友元 。15、静态成员是局部于类的成员,它提供一种同类对象的_共享 _机制。17. 面向对象程序设计有四个主要特点,即抽象、封装、_继承_和_多态 _。18.在用class定义一个类时,数据成员和成员函数的默认访问权限是_private_。19.在函数体之后加_const_关键字可以防止覆盖函数改变数据成员的值。20.私有数据通常由公有成员函数来访问(读和写)。这些函数统称为_操作_。21.在字长为32位的机器中,sizeof(float) 4 字节,sizeof(double) 8 字节22.引用通常用作函数的参数和_引用变量_。23. 如果new返回的指针丢失,则所分配的堆空间无法收回,称为 _内存泄漏_ 。24. C+中多态性包括两种多态性:_编译_时的多态性和_运行_时的多态性。25. 若有char a80;则cina表示从键盘上读入一个_字符串_ 到数组a中。26.静态数据成员是类的所有对象中共享 的成员,静态数据成员初始化与一般数据成员初始化不同。27. C+流类库定义的cin,cout,cerr和clog是_全局流对象_ 。29. 假定用户没有给一个名为shape的类定义析构函数,则系统自动给出的缺省析构函数定义为_shap:shap()_。30._构造函数_是特殊的成员函数,在创建和初始化对象时调用。31.运算符重载的作用是使运算符可以操作自定义的_类_,但重载后运算符原有的 操作_不变。32.派生类不能访问基类的_私有_成员,但可以访问基类的公有成员和_保护_成员。33.具有_纯虚拟函数_的类称为抽象类。三、判断题1.( F)基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能被其它的函数访问。2.(F)break语句也可以用于if体内,它可退出if语句。3.( F) 类的静态数据成员需要在定义每个类的对象时进行初始化。4(F)友元函数说明在类体内,它是一种成员函数。5.(F)在传值调用中,要求实参和形参的类型完全一致并且个数相等。6.(T) 如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。7(F)异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。8.(T) 如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。9.( F) 类的静态数据成员需要在定义每个类的对象时进行初始化。10( T)程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。11( T)重载函数必须有不同的参数列表。12.( T)类B从类A公有继承,则程序段A a;B &b=a;会引发编译错误。13.(T)拷贝构造函数用于用类的一个对象去初始化该类的另一个对象时使用,也可已用于当函数的形参是类的对象,调用函数时,进行形参与实参结合时使用。14(T)类中所提供的成员函数可以直接访问私有成员。15. ( T ) int i,*p=&i;是正确的C说明。16( F)析构函数不能被继承。17(F)一个类只有一个构造函数, 但可以有多个析构函数。18( F)引用和指针都可作函数参数。19( F)对于任意正确定义的类,都可以构造出该类型的对象。20 ( T) 若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该数据成员。(1) 下列关于构造函数说法不正确的是( C )A)构造函数必须与类同名 B)构造函数可以省略不写C)构造函数必须有返回值 D)在构造函数中可以对类中的成员进行初始化(2)下列关于模板的说法正确的是( D )A)模板的实参在任何时候都可以省略 B)类模板与模板类所指的是同一概念C)类模板的参数必须是虚拟类型的 D)类模板中的成员函数全部都是模板函数(3)一个类的友元函数能够访问该类的( D )A)私有成员 B)保护成员 C)公有成员 D)所有成员(4) 下面选项中不属于面向对象程序设计特征的是( C )。A)继承性 B)多态性 C)类比性 D)封装性(5) 下列关于类定义的说法中,正确的是( A )A)类定义中包括数据成员和成员函数的声明 B)类成员的缺省访问权限是保护的C)数据成员必须被声明为私有的 D)成员函数只能在类体外进行定义(6) 下列关于派生类构造函数和析构函数的说法中,错误的是( D )A)派生类的构造函数会隐含调用基类的构造函数B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数(7) 通过运算符重载,可以改变运算符原有的( A )A)操作数类型 B)操作数个数 C)优先级 D)结合性 (8) 有如下函数模板: template T souare(T x) return * x ; 基中T是( C )A)函数形参 B)函数实参 C)模板形参 D)模板实参 (9) 下列字符串中,不可以用作C+标识符的是( D )A)y_2006 B)_TEST_H C)Return D)switch(10) 下列有关继承和派生的叙述中,正确的是( C )A)派生类不能访问基类的保护成员B)作为虚基类的类不能被实例化C)派生类应当向基类的构造函数传递参数 D)虚函数必须在派生类中重新实现(11) 下列运算符中,不能被重载的是( C )A) B) != C) . D)+(12)下列关于C+函数的说明中,正确的是( D );A内联函数就是定义在另一个函数体内部的函数B函数体的最后一条语句必须是return语句C标准C+要求在调用一个函数之前,必须先声明其原型D编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式(13) 下列关于虚函数的说明中,正确的是( B )A从虚基类继承的函数都是虚函数; B虚函数不得是静态成员函数;C只能通过指针或引用调用虚函数 D抽象类中的成员函数都是虚函数;(14) 模板对类型的参数化提供了很好的支持,因此( B );A类模板的主要作用是生成抽象类; B类模板实例化时,编译器将根据给出的模板实参生成一个类;C在类模板中的数据成员都具有同样类型; D类模板中的成员函数都没有返回值;(15)下列符号中可以用作C+标识符的是( A );A_radius Bfoobar(因为有特殊符号) Celse(因为是关键字) D3room(因为开头是数字)(16) 下列叙述中,错误的是( D )A. 父类不能替代子类 B. 子类能够替代父类 C. 子类继承父类 D. 父类包含子类(17) 下列关于C+函数的叙述中,正确的是( C )A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值C)函数可以没有返回值 D)函数不能自己调用自己(18) 下面语句正确的是( C )A) void &ra = 4; B) int ℞ C) int x,y;int &rx = y; D) int a10; int &ra = a;(19)下列关于类和对象的叙述中,错误的是( A )A)一个类只能有一个对象 B)对象是类的具体实例 C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系(20) 在C+中,用于实现运行时多态性的是( D )A)内联函数 B)重载函数 C)模板函数 D)虚函数(21) 下列关于运算符重载的叙述中,正确的是( B )A)通过运算符重载,可以定义新的运算符 B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符函数名是+ D)重载一个二元运算符时,必须声明两个形参(22) 下列关于模板的叙述中,错误的是( C )A)模板声明中的第一个符号总是关键字templateB)在模板声明中用 括起来的部分是模板的形参表 C)类模板不能有数据成员 D)在一定条件下函数模板的实参可以省略(23)下面关于C+语言的描述错误的是( B )AC+语言支持数据封装 BC+语言中引入友元没有破坏封装性 CC+语言允许函数名和运算符重载 DC+语言支持动态联编 (24)一个函数功能不太复杂但要求被频繁调用,应选用( A )A内联函数 B重载函数 C递归函数 D嵌套函数(25)为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( A ) Apublic Bprotected Cprivate Dstatic(26)在C+语言程序中,对象之间的相互通信通过( B )A继承实现 B调用成员函数实现 C封装实现 D函数重载实现 (27)类的析构函数是在什么时候调用的( C )A类创建时 B创建对象时 C删除对象时 D不自动调用(28)通常拷贝构造函数的参数是( C )A某个对象名 B某个对象的成员名 C某个对象的引用名 D某个对象的指针名 (29)下列不是描述类的成员函数的是( C )A构造函数 B析构函数 C友元函数 D拷贝构造函数(30)继承机制的作用是( C )A信息隐藏 B数据封装 C定义新类 D数据抽象(31)在C+语言类体系中,不能被派生类继承的有( B )A转换函数 B构造函数 C虚函数 D静态成员函数(32)下列哪个选项是合法的标识符?( B )A123 B_name Cclass D1first(33)对类的构造函数和析构函数描述正确的是( A )A)构造函数可以重载,析构函数不能重载 B)构造函数不能重载,析构函数可以重载C)构造函数可以重载,析构函数也可以重载D)构造函数不能重载,析构函数也不能重载(34)如果类A被说明成类B的友元,则( D )A) 类A的成员即类B的成员 B) 类B的成员即类A的成员C) 类A的成员函数不得访问类B的成员 D) 类B不一定是类A的友元(35)下面关于虚函数的描述,错误的是( B )A)在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数B)基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数C)虚函数可以是另一个类的友元函数,但不能是静态成员函数D)基类中说明的纯虚函数在其任何派生类中都必须实现(36)下面给数组赋初值语句中,( C )是错误的。A) int a=1,2,3,4,5; B) int b5=1,3,5;C) int c3=1,3,5,7; D) int d=3,5,6,7;1、 派生类的构造函数的成员初始化列中,不能包含( c )。A基类的构造函数; B派生类中子对象的初始化;C基类的子对象的初始化; D派生类中一般数据成员的初始化。 2、 面向对象程序设计思想的主要特征不包括( B )A) 继承性 B功能分解,逐步求精 C封装性和信息隐藏 D多态性3、 面向对象程序设计中,( B )为程序的组成单元。 A) 语句 B类 C主函数 D子函数4、 假设已经有定义char * const name=”chen”;下面的语句中正确的是 ( D ) A) name3=q; Bname=”lin”; Cname= new char5; Dcoutb ? a : b; Dextern long index;6、 在C+语言中,函数返回值的类型是由( B )定义的。 A) return 语句中的表达式类型 B定义该函数时所指定的函数类型C调用该函数时的主调用函数类型 D调用函数时系统临时7、 在派生类中重新定义虚函数时,除了( D )方面,其他方面都必须与基类中相应的虚函数保持一致。A) 参数个数 B参数类型 C函数名称 D函数体5有关运算符重载正确的描述是:( D )。AC+语言允许在重载运算符时改变运算符的操作个数BC+语言允许在重载运算符时改变运算符的优先级CC+语言允许在重载运算符时改变运算符的结合性DC+语言允许在重载运算符时改变运算符的原来的功能6若MyClass为一个类,执行“MyClass a3,*p4;”语句时会自动调用该类构造函数的次数是( B )。A4B3C2D77对new运算符的下列描述中,( B )是错误的。A它可以动态创建对象和对象数组 B用它创建对象数组时必须指定初始值C用它创建对象时要调用构造函数 D用它创建的对象可以使用运算符delete来释放8在类外不能访问类私有成员属于类的( A )特征。A封装B继承 C多态D抽象8、 +namespace与class、struct、union和enum有着明显的区别,下面说法错误的是( C ) A) namespace只能在全局范围内定义,但它们之间可以互相嵌套B) 在namespace定义的结尾,右花扩号的后面不必跟一个分号C) 一个namespace可以在多个头文件中用一个标识符来定义,就好像重复定义一个类一样D) namespace可以把全局名字空间当成一个小空间来管理9、 在C+语言中,数据封装要解决的问题是( C ) A) 避免数据丢失 B数据的规范化 C防止不同模块之间数据的非法访问 D 便于数据转换10、 已知print()函数是一个类的常量成员函数,它无返回值,下列表示中( A )是正确的。 A) void print() const Bconst void print() Cvoid const print() D void print(const)11、 以下正确的函数原型为( D )A) func (int x ; int y); Bvoid (x , y); Cvoid (int x , y); Dvoid func (int , int);12、 为了避免在嵌套的条件语句if-else中产生二义性,C+规定:else子句总是与( B )配对。A) 缩排位置相同的if B和其之前最近if C和其之后最近if D同一行上的if13、 对于一个功能不太复杂,并且要求加快执行速度,选用( A )合适。A) 内联函数 B重载函数 C递归调用 D嵌套调用14、 编译时的多态性可以通过使用( C )获得。A) 虚函数和指针 B重载函数和析构函数 C虚函数和对象 D虚函数和引用9类O定义了公有函数F1。P和Q为O的派生类,定义为class P:protected O;class Q: public O。则可以访问F1的是( A )。A O、P、Q类的对象 B P、Q类的对象 C O、Q类的对象D O类的对象10A类定义如下,编译时有错误的行是( B )。class A int a; /1行public: A(int);/2行 A();/3行 A(int); /4行;A 1B 2 C 3D 412要实现动态联编,必须通过( A )调用虚函数。A对象指针B成员名限定C对象名D派生类名15、 下面对于友元函数描述正确的是 ( C )。A) 友元函数的实现必须在类的内部定义 B友元函数是类的成员函数C友元函数破坏了类的封装性和隐藏性 D友元函数不能访问类的私有成员16、 设有如下定义int (*ptr)();,下面关于ptr正确叙述是( C )。A) ptr是指向一维数组的指针变量。 Bptr是指向int 型数据的指针变量。C ptr是指向函数的指针,该函数返回一个int型数据。D ptr是一个函数名,该函数的返回值是指向int型数据的指针。17、 使用重载函数编程序的目的是( A )A) 使用相同的函数名调用功能相似的函数 B共享程序代码C提高程序的运行速度 D节省存储空间18在派生类中重新定义虚函数时,除了(D)方面,其他方面都必须与基类中相应的虚函数保持一致。A) 参数个数 B参数类型 C函数名称 D函数体13有如下函数模板定义:template T func(T x, T y) return x*x+y*y; 在下列对func的调用中,错误的是(C)。Afunc(5, 11);Bfunc(3.6, 5.8); Cfunc(4, 9.4)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!