一、单项选择题(本大题共10小题,每小题2分,共20分)1.在C++中,函数原型不能标识(D )A.函数的返回类型B.函数参数的个数C.函数参数类型D.函数的功能2.在C++程序中,对象之间的相互通信通过(B )A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现3.对于任意一个类,析构函数的个数最多为(B ) A.0 B.1 C.2 D.35.友元关系不能(A )A.继承B.是类与类的关系C.是一个类的成员函数与另一个类的关系D.提高程序的运行效率6.语句ofstream f(″SALARY.DAT″,ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALARY.DAT 并与之连接,并且(A )A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件7.下面说法正确的是(B )A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字inline 定义//当程序使用内敛函数时,编译器将每个函数调用都用函数内的语句代替,这样就省去了函数调用地开销8.可以用p.a 的形式访问派生类对象p 的基类成员a,其中a 是(D )A.私有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.公有继承的公有成员//函数可以调用成员,对象不可以调用9.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( C)A.派生类的对象可以赋给基类的对象B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员D.派生类的对象的地址可以赋给指向基类的指针//派生类的对象是不能访问基类的任何成员10.对于类定义class A{public:virtual void func1( ){ }void func2( ){ }};class B:public A{public:void func1( ){cout<<″class B func 1″<<end1;}virtual void func2( ){cout<<″class B func 2″<<end1;}};下面正确的叙述是(C )A. A::func2( )和B::func1( )都是虚函数B. A::func2( )和B::func1( )都不是虚函数C. B::func1( )是虚函数,而A::func2( )不是虚函数D. B::func1( )不是虚函数,而A::func2( )是虚函数第二部分非选择题(共80 分)二、填空题(本大题共10 小题,每小题2 分,共20 分)11.定义类的动态对象数组时,系统只能够自动调用该类的_无参_______构造函数对其进行初始化。
12.在C++程序设计中,建立继承关系倒挂的树应使用____单_一____继承。
13.表达式cout<<end1 还可表示为____cout<<`\n`_____。
14.基类的公有成员在派生类中的访问权限由___访问控制___ __决定。
15.C++支持的两种多态性分别是__编译时的_(操作重载)_静态_____多态性和_运行时的(虚函数)___动态_____多态性。
16.C++中语句const char * const p=″hello″;所定义的指针p 和它所指的内容都不能被__改变(重新赋值)____。
17.假定AB 为一个类,则语句AB(AB&x);为该类_____拷贝____构造函数的原型说明。
18.将关键字const 写在成员函数的____函数头_____和____函数体_____之间时,所修饰的是this 指针。
19.在C++中,访问一个对象的成员所用的运算符是__·___,访问一个指针所指向的对象的成员所用的运算符是__>___。
20.派生类从一个或多个以前定义的该类的__基类__一、单项选择题(每题2分,共20分)1. 派生类对象可访问基类中的什么成员( A)A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员2. 定义析构函数时,应该注意( C )A.其名与类名完全相同B.返回类型是void类型C.无形参,也不可重载D.函数体中必须有delete语句3. 如果类A被说明成类B的友元,则( D )。
A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元4. 应在下列程序划线处填入的正确语句是( C )#includeclass Base{ public:void fun(){cout<<"Base::fun"<<endl;}};class Derived:public Base{ void fun(){_____________ // 显示调用基类的函数fun()cout<<"Derived::fun"<<ENDL;}};A.fun(); B. Base.fun(); C. Base::fun(); D. Base->fun();5. 面向对象程序设计将数据与( A )放在一起,做为一个相互依存、不可分割的整体来处理。
A. 对数据的操作B. 信息C. 数据隐藏D. 数据抽象6. 在类中声明转换函数时不能指定( A )。
A. 参数B. 访问权限C. 操作D. 标识符7. 在派生类中重新定义虚函数时必须在( A )方面与基类保持一致。
A. 参数类型B. 参数名字C. 操作内容D. 赋值8. 下面关于C++中类的继承与派生的说法错误的是( C )。
A.基类的protected成员在公有派生类的成员函数中可以直接使用B.基类的protected成员在私有派生类的成员函数中可以直接使用C.公有派生时,基类的所有成员访问权限在派生类中保持不变D.基类的protected成员在保护派生类的成员函数中可以直接使用9. 重载赋值操作符时,应声明为( C )函数。
A. 友元B. 虚C. 成员D. 多态10. 语句ofstream f(″SALARY.DAT″,ios::app|ios::binary); 的功能是建立流对象f,试图打开文件SALARY.DAT 并与之连接,并且( A )A. 若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B. 若文件存在,将其置为空文件;若文件不存在,打开失败C. 若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D. 若文件存在,打开失败;若文件不存在,建立一个新文件二、填空题(每空2分,共30分)1. 假定AB 为一个类,则语句AB(AB&x) ;为该类_________ 复制构造函数的原型说明。
2. C++ 支持的两种多态性分别是________编译时的_ 多态性和运行时的_________ 多态性。
3. 定义类的动态对象数组时,系统只能够自动调用该类的无参的_________ 构造函数对其进行初始化。
4. 运算符重载时,其函数名由 __operator运算符_构成。
成员函数重载双目运算符时,左操作数是_当前对象__,右操作数是__函数形参_。
C++标准库中的异常层次的根类为exception _____类;MFC类库中绝大多数类都源自根类__ CObject _____类。
在下面横线处填上适当字句,完成类中成员函数的定义。
class A{int * a;public:A(int aa=0) {a=_ new int(aa)______; // 用aa 初始化 a 所指向的动态对象}~A(){_____delete a____;}// 释放动态存储空间};7.C++支持面向对象程序设计的四个要素是:封装性、继承性、抽象性和多态性。
8.模板分为类模板和函数模板。
一、单项选择题(每题2分,共20分)1. 在下面选项中,对类的拷贝构造函数的声明形式是(B)A. A::A(&)B. A::A(constA&)C. A::A(A)D. void A::A(A&a)2. 下面关于成员函数特征的描述中,错误的是(A )A.成员函数不可以设置参数的默认值 B.成员函数可以重载C.成员函数可以是内联函数D.成员函数可以是静态的3. 下面关于类模板叙述不正确的是( B )A.可以有多个构造函数B. 类模板是模板类的实例C. 一个类模板可以用来实例化多个模板类 D. 类模板可以有多个参数4. 要使一个类成为抽象类,这个类应具有的条件是(A )A.至少有一个纯虚函数 B. 至少有一个虚函数C. 只含有一个纯虚函数 D. 只含有一个虚函数5. 有关运算符重载正确的描述是( D )A. C++语言允许在重载运算符时改变运算符的操作个数B. C++语言允许在重载运算符时改变运算符的优先级C. C++语言允许在重载运算符时改变运算符的结合性D. C++语言允许在重载运算符时改变运算符的原来的功能6. 下列说法正确的是( D )。
A. 一个类的对象可以是另一个类的成员B. 一个类可以作为另一个类的派生类C. 一个类可以在另一个类定义体进行定义D. 以上说法均正确7. 有如下程序:#include <iostream.h>class BASE{char c;public:BASE(char n):c(n){}virtual~BASE(){cout<<c;}};class DERIVED:public BASE{char c;public:DERIVED(char n):BASE(n+1),c(n){}~DERIVED(){cout<<c;}};int main(){DERIVED('X');return 0;}执行上面的程序将输出( C )。
A)X B)YX C)XY D)Y8. 类MyClass的定义如下:class MyClass{ public:MyClass(){value=0;}SetValue(int i){value=i;}private:int value;};则对语句:MyClass *p,my;p=&my;正确的描述是( D )。