|
答案来源:www.ybaotk.com《面向对象程序设计》模拟题
一.单选题
1.如果一个类中包含纯虚函数,则该类称为().
A.抽象类
B.虚基类
C.派生类
D.子类
[答案]:A2.在类中将show声明为不带返回值的纯虚函数,则正确的写法是().
A.virtual void show()=0;
B.virtual show()=0;
C.virtual void show();
D.void show()=0 virtual;
[答案]:A3.虚函数必须是类的().
A.构造函数
B.友元函数
C.成员函数
D.私有成员函数
[答案]:C4.下列关于虚函数的描述中,()是正确的.
A.虚函数一定不能有函数体
B.含有虚函数的类,不能定义该类对象
C.虚函数只能被重载,不能被继承
D.基类中声明虚函数后,派生类中可以不重载该虚函数
[答案]
5.在C++中要实现动态联编,可以使用()调用虚函数.
A.类名
B.派生类指针
C.对象名
D.基类指针
[答案]
6.下列函数中,不能说明为虚函数的是().
A.私有成员函数
B.公有成员函数
C.构造函数
D.析构函数
[答案]:C7.一个类中的某个函数被声明为virtual,则该函数在该类的所有派生类中().
A.都是虚函数
B.重载后才是虚函数
C.被重新说明为virtual时才是虚函数
D.不是虚函数
[答案]:A8.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A的指针,则p->func()将().
A.调用类A中的函数func()
B.调用类B中的函数func()
C.根据p实际所指对象类型确定调用A或B类中的函数func()
D.同时调用A类和B类中的函数func()
[答案]:C9.下列关于虚函数的说明中,正确的是().
A.从虚基类继承的函数都是虚函数
B.虚函数不能是静态成员函数
C.通过对象不能调用虚函数
D.抽象类中的函数都是虚函数
[答案]:B10.有一个重载运算符的函数参数表中,没有任何参数,则可以断定被重载的运算符函数是().
A.单目友元函数
B.单目成员函数
C.双目友元函数
D.双目成员函数
[答案]:B11.下列关于运算符函数返回值类型的描述中,错误的是().
A.可以是类类型
B.可以是int类型
C.可以是void类型
D.可以是float类型
[答案]:C12.友元运算符obj1>obj2被C++编译器解释为().
A.operator>(obj1,obj2)
B.>(obj1,obj2)
C.obj1.operator>(obj2)
D.obj2.operator>(obj1)
[答案]:C13.在表达式x+y*z中,+作为成员函数重载的运算符,*作为友元函数重载的运算符,以下叙述中正确的是().
A.operator+有2个参数,operator*有2个参数
B.operator+有2个参数,operator*有1个参数
C.operator+有1个参数,operator*有2个参数
D.operator+有1个参数,operator*有1个参数
[答案]:C14.重载赋值运算符时,应声明为()函数.
A.友元
B.虚
C.成员
D.多态
[答案]:C15.在成员函数中进行双目运算符重载时,参数表中应有()个参数.
A.0
B.1
C.2
D.3
[答案]:B16.双目运算符重载为友元函数时,参数表中应有()个参数.
A.0
B.1
C.2
D.抽象类中的函数都是虚函数
[答案]:C17.若表达式a+b中的”+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为().
A.a.operator+(b)
B.b.operator+(a)
C.operator+(a,b)
D.双目成员函数
[答案]:A18.假定M是一个类名,且M中重载了操作符=,可以实现M对象间的连续赋值,如”m1=m2=m3;”.重载操作符=的函数原型最好是().
A.int operaotor=(constM);
B.int operator=(constM&);
C.Moperator=(constM&);
D.可以是float类型
[答案]
19.下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是().
A.Value operator+(Value,Value);
B.Value operator+(Value,int);
C.Value &operator+(Value,Value);
D.obj2.operator>(obj1)
[答案]:A20.类模板允许我们创建一系列相关的().
A.类
B.变量
C.数组
D.operator+有1个参数,operator*有1个参数
[答案]:A21.关于异常,以下叙述中正确的是().
A.友元
B.当异常被一个catch块处理后,执行流程进入下一个catch块
C.当一个异常被抛出后,其后的第一个catch块执行
D.多态
[答案]:A22.以下关于函数模板叙述正确的是().
A.函数模板也是一个具体类型的函数
B.函数模板的类型参数与函数的参数是同一个概念
C.通过使用不同的类型参数,函数模板可以生成不同类型的函数
D.用函数模板定义的函数没有类型
[答案]:C23.有如下函数模板定义,则下列函数调用中错误的是().template<typnameT>Tfunc(T x,T y){returnx*x+y*y;}
A.func(3,5);
B.func(3,3.5)
C.func<int>(3,5.5);
D.func<double>(3,3.5);
[答案]:B24.下列关于函数模板的描述中,错误的是().
A.函数模板必须由程序员实例化为可执行的模板函数
B.函数模板的实例化由编译器完成
C.一个类定义中,只要有一个函数模板,则这个类是类模板
D.类模板的成员函数都是函数模板
[答案]:A25.下列模板声明中,正确的是().
A.template<typenameT1,T2>
B.template<classT1,T2>
C.template<T1,T2>
D.template<typenameT1,typenameT2>
[答案]
26.类模板的使用实际上是将类模板实例化为一个().
A.函数
B.对象
C.类
D.抽象类
[答案]:C27.下列关于异常的叙述中,错误的是().
A.编译错属于异常,可以抛出
B.运行错属于异常
C.抛出异常后,将跳过函数中的其它代码
D.抛出的异常可以不被捕获
[答案]:A28.在C++程序中使用的cin标识符是系统类库中定义的()类中的一个对象.
A.istream
B.ostream
C.iostream
D.fstream
[答案]:A29.要进行文件的输入输出,除了包含头文件iostream外,还需要包含头文件().
A.ifstream
B.fstream
C.ostream
D.cstdio
[答案]:B30.定义char*p=“abcd”,能输出p的值(字符串地址)的语句为().
A.cout<<&p;
B.cout<<p;
C.cout<<(char*)p;
D.cout<<const_cast<void*>(p);
[答案]
31.用于打开二进制文件的标志是().
A.ios::binary
B.ios::in
C.ios:
ut
D.ios::trunc
[答案]:A32.下列输出字符’B’的方法中,错误的是().
A.cout.put(‘B’);
B.chara=’B’;cout<<a;
C.cout<<put(‘B’);
D.cout<<’B’;
[答案]:C33.使用setw()等操作函数设置数据输出格式时,应包含头文件().
A.<iomanip>
B.<iostream>
C.<fstream>
D.<ostream>
[答案]:A34.可设置输出宽度的方法是().
A.setfill()
B.setw()
C.setprecision()
D.oct
[答案]:B35.面向对象程序设计思想的主要特征不包括().
A.继承性
B.功能分解,逐步求精
C.封装性和信息隐藏
D.多态性
[答案]:B36.下列能用作C++标识符的是().
A._123
B.for
C.case
D.virtual
[答案]:A37.以下工具中,()将C++源代码转换为目标文件.
A.编译器
B.链接器
C.编辑器
D.集成开发环境
[答案]:A38.C++程序主函数名称是().
A.Main
B.main
C.MAIN
D.用户自定义函数
[答案]:B39.main函数的返回值类型是().
A.char
B.double
C.int
D.无返回类型
[答案]:C40.下列关于相同类型指针的运算中,()是非法的.
A.两个指针进行相等或不等的运算
B.将NULL赋值给某个指针变量
C.一个指针加上一个整数
D.两个指针相加
[答案]:D41.下列关于动态联编的叙述中,()是错误的.
A.动态联编是以虚函数为基础的
B.动态联编在程序运行时确定所调用的函数代码块
C.动态联编调用多态函数时,传递的是基类对象的指针或基类对象引用
D.动态联编是在编译时确定调用某个函数的
[答案]:D42.下列描述中,()是抽象类的特征.
A.可以声明虚函数
B.不能说明其对象
C.可以定义友元函数
D.可以进行构造函数重载
[答案]:B43.在派生类中重载一个虚函数时,要求函数名.参数个数.参数类型和函数返回值().
A.相同
B.不同
C.相容
D.部分相同
[答案]:A44.下列关于抽象类的说明中,不正确的是().
A.含有纯虚函数的类称为抽象类
B.抽象类不能被实例化
C.抽象类的派生类一定可以实例化
D.可以声明抽象类的指针
[答案]:C45.下列运算符中,不能使用友元函数实现的是().
A.+
B.=
C.*
D.<<
[答案]:B46.若表达式a==b中的”==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为().
A.a.operator==(b)
B.b.operator==(a)
C.operator==(a,b)
D.operator==(b,a)
[答案]:C47.对于int *p[5],以下叙述正确的是().
A.p是一个指向数组的指针,所指向的数组是5个int型元素
B.p是一个指向某数组中下标为5的元素的指针,该元素为int型
C.p[5]表示某个数组的第5个元素的值
D.p是一个具有5个元素的指针数组,每个元素是一个int型指针
[答案]:D48.若一个函数无返回值,则定义它时函数的类型应该为().
A.void
B.任意
C.int
D.无
[答案]:A49.在VC环境下,int型占用的字节数为().
A.1
B.2
C.4
D.8
[答案]:C50.类型修饰符unsigned修饰()类型是错误的.
A.char
B.int
C.longint
D.float
[答案]:D51.已有int m=10;则属于合法引用定义的是().
A.int &rm=m;
B.int &rm=10;
C.int &rm;rm=m;
D.int &rm=&m;
[答案]:A52.在C++中,下列关于设置参数默认值的叙述中,正确的是().
A.不允许设置参数的默认值
B.设置参数默认值时,应先设置右边的再设置左边的
C.设置参数默认值时,要么全部设置,要么一个也不设置
D.设置参数默认值时,应先设置左边的再设置右边的
[答案]:B53.下列对重载函数的描述中,()是错误的.
A.重载函数中不允许使用缺省参数
B.重载函数不能通过返回值类型区分不同的版本
C.编译系统根据参数表确定函数版本
D.类的析构函数不能重载
[答案]:A54.下面动态分配内存的代码执行后,正确的描述是().Int *p;p=new int[5];
A.动态开辟5个int元素,初值不确定
B.动态开辟初值为5的一个int元素
C.动态开辟5个int元素,初值为0
D.释放p所指向内存的代码为:delete p;
[答案]:A55.重载函数在调用时选择的依据中,()是错误的.
A.参数个数
B.参数类型
C.函数名字
D.函数的类型
[答案]:D56.已知数组定义,int array[10];则最小数组下标为().
A.0
B.1
C.9
D.10
[答案]:A57.字符串”ab”在内存中占用的字节数为().
A.1
B.2
C.3
D.4
[答案]:C58.1条return语句,可以返回()值.
A.1个
B.多个
C.1个或多个
D.任意
[答案]:A59.以下表达式中,结果为false的是().
A.3.15
B.-0.5
C.0
D.‘0’
[答案]:C60.已知数组定义,int array[10];()是非法的数组元素访问.
A.array[10]
B.array[1]
C.array[0]
D.array[9]
[答案]:A61.下列的符号常量定义中,错误的定义是().
A.int constM=10;
B.const intM=20;
C.const char ch;
D.const bool mark=true;
[答案]:C62.设array为一个数组,则表达式sizeof(array)/sizeof(array[0])的结果为().
A.array数组首地址
B.array数组中元素个数
C.array数组中每个元素所占的字节数
D.array数组占的总字节数
[答案]:B63.用new运算符创建一个含10个元素的一维整型数组的正确语句是().
A.int *p=new a[10];
B.int *p=new float[10];
C.int *p=new int[10];
D.int *p=new int[10]={1,2,3,4,5}
[答案]:C64.假定指针变量p定义为”int *p=new int[30];”,要释放p所指向的动态内存,应使用语句().
A.delete p;
B.delete *p;
C.delete &p;
D.delete[]p;
[答案]:D65.采用重载函数的目的是().
A.实现共享
B.减少空间
C.提高速度
D.使用方便,提高可读性
[答案]:D66.关于封装,下列说法中不正确的是().
A.通过封装,对象的全部属性和操作结合在一起,形成一个整体
B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)
C.通过封装,每个对象都成为相对独立的实体
D.通过封装,对象的属性都是不可见的
[答案]:D67.面向对象方法的多态性是指().
A.一个类可以派生出多个特殊类
B.一个对象在不同的运行环境中可以有不同的变体
C.针对一消息,不同的对象可以以适合自身的方式加以响应
D.一个对象可以是由多个其他对象组合而成的
[答案]:C68.在类作用域中能够通过直接使用该类的()成员名进行访问.
A.私有
B.公有
C.保护
D.任何
[答案]:D69.假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为().
A.px(a)
B.px[a]
C.px->a
D.px.a
[答案]:C70.类的析构函数是一个对象被()时自动调用的.
A.建立
B.销毁
C.赋值
D.引用
[答案]:B71.设px是指向一个类对象的指针变量,则执行”delete px;”语句时,将自动调用该类的().
A.无参构造函数
B.带参构造函数
C.析构函数
D.拷贝构造函数
[答案]:C72.类的析构函数可以带有()个参数.
A.0
B.1
C.2
D.任意
[答案]:A73.静态成员函数对类的数据成员访问().
A.是不允许的
B.只允许是静态数据成员
C.只允许是非静态数据成员
D.可允许是静态数据成员或非静态数据成员
[答案]:B74.假定AB为一个类,则执行”AB a(2),b[3],*p[4];”语句时共调用该类构造函数的次数为().
A.3
B.4
C.5
D.9
[答案]:B75.假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为().
A.int AA::a()
B.int AA:a()
C.AA::a()
D.AA::inta()
[答案]:A76.类中具有数据操作功能的是().
A.常数据成员
B.函数成员
C.数据成员
D.静态成员
[答案]:B77.关键字()定义允许在类外部使用的成员数据和成员函数.
A.virtual
B.class
C.public
D.private
[答案]:C78.下列对构造函数的描述中,()是错误的.
A.函数名与类名完全相同
B.构造函数允许重载
C.返回类型应该为void
D.构造函数允许使用缺省参数
[答案]:C79.已知print是某个类的常成员函数,返回值类型为void,正确的定义形式是().
A.void const print();
B.const void print();
C.void print() const;
D.void print(const);
[答案]:C80.假定MyClass为一个类,执行”MyClassa[3],*p;”语句时会自动调用该类型构造函数()次.
A.2
B.3
C.4
D.5
[答案]:B81.下列运算符中,必须使用友元函数实现的是().
A.+
B.++
C.*
D.<<
[答案]:D82.如果表达式a++中的”++”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为().
A.a.operator++()
B.operator++(a)
C.operator++(a,1)
D.operator++(1,a)
[答案]:C83.在C++程序中使用的cout标识符是系统类库中定义的()类中的一个对象.
A.istream
B.ostream
C.iostream
D.fstream
[答案]:B84.假定AB为一个类,则执行”AB x;”语句时将自动调用该类的().
A.带参构造函数
B.无参构造函数
C.拷贝构造函数
D.赋值重载运算符
[答案]:B85.类的构造函数可以带有()个参数.
A.0
B.1
C.2
D.任意
[答案]:D86.对类对象成员的初始化是通过构造函数中给出的()实现的.
A.函数体
B.初始化列表
C.参数表
D.初始化列表或函数体
[答案]:B87.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为().
A.AB(){a=0;}
B.AB(int aa=0):a(aa){}
C.AB(int aa):a(aa){}
D.AB(){}
[答案]:D88.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为().
A.abc
B.*this
C.this
D.this&
[答案]:C89.下列关于析构函数的描述中,()是正确的.
A.一个类中可以重载多个版本析构函数
B.析构函数名与类名完全相同
C.析构函数可以有1个或多个参数
D.析构函数不能指定返回值类型
[答案]:D90.假定AB为一个类,x是AB类的一个对象,则执行”AB y=x;”语句时将自动调用该类的().
A.复制构造函数
B.析构函数
C.缺省构造函数
D.赋值运算符函数
[答案]:A91.若有类Test,该类的复制构造函数声明为().
A.Test();
B.Test (constCTest&);
C.void Test(constCTest&t);
D.Test(constCTest*t);
[答案]:B92.以下选项中,()不是类的成员函数.
A.构造函数
B.析构函数
C.友元函数
D.复制构造函数
[答案]:C93.构造函数在()时被调用.
A.程序编译
B.程序装入内存
C.创建类
D.创建对象
[答案]:D94.用户能够为类定义()个析构函数.
A.1
B.0
C.2
D.多个
[答案]:A95.下列函数原型中,可以作为类AA构造函数的是().
A.void AA(int);
B.int AA();
C.AA(int)const;
D.AA(int);
[答案]:D96.友元的作用是().
A.提高程序的运行效率
B.加强类的封装性
C.实现数据的隐藏
D.增加成员函数的种类
[答案]:A97.被非静态成员函数访问的类的数据成员().
A.可以是非静态数据成员或静态数据成员
B.不可能是类的静态数据成员
C.只能是类的非静态数据成员
D.只能是类的静态数据成员
[答案]:A98.使用关键字()修饰的数据成员,允许当前类及其派生类访问,而不允许在类的外部访问.
A.public
B.protected
C.private
D.不指定
[答案]:B99.派生类的成员函数可以直接访问基类的()成员.
A.公有
B.保护
C.公有和保护
D.私有
[答案]:C100.下列叙述中,()不符合赋值兼容性规则.
A.基类的对象可以赋值给派生类对象
B.派生类对象可以赋值给基类的对象
C.派生类对象可以初始化基类对象的引用
D.派生类对象的地址可以赋值给基类的对象指针
[答案]:A101.如果采用公有继承,通过派生类对象,可以访问基类的().
A.私有成员
B.所有成员
C.保护成员
D.公有成员
[答案]:D102.派生类构造函数的成员初始化列表中不能包含().
A.基类的构造函数
B.派生类中成员对象的初始化
C.基类成员对象的初始化
D.派生类中一般数据成员的初始化
[答案]:D103.当保护继承时,基类的()在派生类中成为保护成员,不能通过派生类对象来直接访问.
A.任何成员
B.公有成员和保护成员
C.公有成员和私有成员
D.私有成员
[答案]:B104.设置虚基类的目的是().
A.简化程序
B.消除二义性
C.提高运行效率
D.减少目标代码
[答案]:B105.下列虚基类的声明中,()是正确的.
A.class virtualB:publicA
B.classB:virtual publicA
C.virtual classB:publicA
D.classB:publicA virtual
[答案]:B106.类O定义了私有函数F1.P和Q为O类的派生类,定义为classP:public){…};classQ:protectedO{…}.则()可以访问F1.
A.O的对象
B.P类内
C.O类内
D.Q类内
[答案]:C107.派生类采用()继承方式可以使基类保护成员成为自己的私有成员.
A.私有继承
B.保护继承
C.公有继承
D.私有.保护.公有均可
[答案]:A108.从一个基类派生出的各个类的对象之间().
A.共享所有数据成员,每个对象还包含基类的所有属性
B.共享部分数据成员,每个对象还包含基类的所有属性
C.不共享任何数据成员,但每个对象还包含基类的所有属性
D.共享部分数据成员和函数成员
[答案]:C109.建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为()的构造函数.
A.自己所属类.对象成员所属类.基类
B.对象成员所属类.基类.自己所属类
C.基类.对象成员所属类.自己所属类
D.基类.自己所属类.对象成员所属类
[答案]:C110.当派生类中有和基类一样名字的成员时,一般来说,().
A.将产生二义性
B.派生类的同名成员将覆盖基类的成员
C.是不能允许的
D.基类的同名成员将覆盖派生类的成员
[答案]:B111.下列关于运算符重载的描述中,正确的是().
A.运算符重载可以改变操作数的个数
B.运算符重载可以改变优先级
C.运算符重载可以改变结合性
D.运算符重载不可以改变语法结构
[答案]:D112.下列关于模板的描述,错误的是().
A.模板把数据类型作为一个设计参数
B.模板定义中支持多个参数类型
C.模板定义中只能支持一个参数
D.模板参数列表中可以有类型参数和非类型参数
[答案]:C113.read函数的功能是从输入流中读入().
A.一个字符
B.当前字符
C.一行字符
D.指定若干字符
[答案]:D114.要求打开文件”D:\file.dat”,并能写入数据的正确语句是().
A.if streamin file(“D:\\file.data”,ios::in);
B.if streamin file(“D:\\file.data”,ios:
ut);
C.of streamin file(“D:\\file.data”,ios:
ut);
D.if streamin file(“D:\\file.data”,ios::in|ios:
ut);
[答案]:D115.编译器将C++源代码翻译为().
A.目标文件
B.可执行文件
C.头文件
D.资源文件
[答案]:A116.C++源程序文件的缺省扩展名为().
A..lib
B..obj
C..exe
D..cpp
[答案]:D117.假定一个二维数组的定义语句为”int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为().
A.2
B.4
C.6
D.8
[答案]:C118.函数重载是指().
A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C.两个以上的函数名字不同,但形参的个数或类型相同
D.两个以上的函数取相同的函数名,并且函数的返回类型相同
[答案]:A119.假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为().
A.x(a)
B.x[a]
C.x->a
D.x.a
[答案]:D120.类的实例化是指().
A.定义类
B.创建类的对象
C.调用类的成员
D.指明具体类
[答案]:B二.问答题
1.写出下面程序的执行结果. |
上一篇:23春地大楼宇智能技术(更新)-模拟题非答案下一篇:23春地大企业经营战略管理-模拟题非答案
|