第一次作业
一、单项选择题。
1. 编写C++程序一般需经过的几个步骤依次是( ) A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行
2. 决定C++语言中函数的返回值类型的是( )
A. return语句中的表达式类型 B. 调用该函数时系统随机产生的类型 C. 调用该函数时的主调用函数类型 D. 在定义该函数时所指定的数据类型 3. 下面叙述不正确的是( )
A. 派生类一般都用公有派生 B. 对基类成员的访问必须是无二义性的
C. 赋值兼容规则也适用于多重继承的组合 D. 基类的公有成员在派生类中仍然是公有的 4. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体 也就是( )
A. 类 B. 对象 C. 函数体 D. 数据块
5. 在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中 的( )
A. 私有成员 B. 公有成员 C. 保护成员 D. 保护成员或私有成员 6. 对基类和派生类的关系描述中,错误的是( )
A. 派生类是基类的具体化 B. 基类继承了派生类的属性 C. 派生类是基类定义的延续 D. 派生类是基类的特殊化 7. 关于this指针使用说法正确的是( )
A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码 B. 保证基类私有成员在子类中可以被访问。 C. 保证基类保护成员在子类中可以被访问。 D. 保证基类公有成员在子类中可以被访问。 8. 所谓多态性是指 ( )
A. 不同的对象调用不同名称的函数 B. 不同的对象调用相同名称的函数 C. 一个对象调用不同名称的函数 D. 一个对象调用不同名称的对象 9. 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 ( ) A. 内联函数 B. 重载函数 C. 递归函数 D. 嵌套函数 10. 在类中说明的成员可以使用关键字的是( )
A. public B. extern C. cpu D. register 二、填空题。
1. C++的流库预定义了4个流,它们是cin、cout、clog和___。 2. 每个对象都是所属类的一个___。
3. 在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语 句___。
4. 函数模板中紧随template之后尖括号内的类型参数都要冠以保留字___。
5. 定义类的动态对象数组时,系统只能够自动调用该类的___构造函数对其进行初始化。 6. 表达式cout< 7. 在C++中,访问一个指针所指向的对象的成员所用的指向运算符是___。 8. 假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的另一个对象时,可以调 用___构造函数来完成此功能。 9. 对赋值运算符进行重载时,应声明为___函数。 10. 如果要把A类成员函数f()且返回值为void声明为类B的友元函数,则应在类B的定义中加 入的语句___。 第二次作业 一、单项选择题。 1. 静态成员函数没有( ) A. 返回值 B. this指针 C. 指针参数 D. 返回类型 2. 假定AB为一个类,则执行“AB a(2), b[3],*p[4];”语句时调用该类构造函数的次数 为( ) A. 3 B. 4 C. 5 D. 9 3. 有关多态性说法不正确的是( ) A. C++语言的多态性分为编译时的多态性和运行时的多态性 B. 编译时的多态性可通过函数重载实现 C. 运行时的多态性可通过模板和虚函数实现 D. 实现运行时多态性的机制称为动态多态性 4. 假定一个类的构造函数为“A(int i=4, int j=0) {a=i;b=j;}”, 则执行“A x (1);”语 句后,x.a和x.b的值分别为( ) A. 1和0 B. 1和4 C. 4和0 D. 4和1 5. 类MyA的拷贝初始化构造函数是 ( ) A. MyA() B. MyA(MyA*) C. MyA(MyA&) D. MyA(MyA) 6. 在C++中,函数原型不能标识( ) A. 函数的返回类型 B. 函数参数的个数 C. 函数参数类型 D. 函数的功能 7. 友元关系不能( ) A. 提高程序的运行效率 B. 是类与类的关系 C. 是一个类的成员函数与另一个类的关系 D. 继承 8. 实现两个相同类型数加法的函数模板的声明是( ) A. add(T x,T y) B. T add(x,y) C. T add(T x,y) D. T add(T x,T y) 9. 在int a=3,int *p=&a;中,*p的值是( ) A. 变量a的地址值 B. 无意义 C. 变量p的地址值 D. 3 10. 下列不是描述类的成员函数的是( ) A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 二、填空题。 1. 假设int a=1,b=2;则表达式(++a/b)*b--的值为___。 2. 抽象类中至少要有一个___函数。 3. 一个抽象类的派生类可以实例化的必要条件是实现了所有的___。 4. 下面程序的输出结果为___。 #include }while(--i); cout< 5. 静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是___。 6. 在用C++进行程序设计时,最好用___代替malloc。 7. 由const修饰的对象称为___。 8. 在C++程序设计中,建立继承关系倒挂的树应使用___继承。 9. 基类的公有成员在派生类中的访问权限由___决定。 10. 不同对象可以调用相同名称的函数,但执行完全不同行为的现象称为___。 第三次作业 一、单项选择题。 1. 设有定义int i;double j=5;,则10+i+j值的数据类型是( ) A. int B. double C. float D. 不确定 2. 要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为( ) A. const char *p=“ABCD”; B. char *const p=“ABCD”; C. char const *p=“ABCD”; D. const char * const p=“ABCD”; 3. 类的构造函数被自动调用执行的情况是在定义该类的( ) A. 成员函数时 B. 数据成员时 C. 对象时 D. 友元函数时 4. 已知类A是类B的友元,类B是类C的友元,则( ) A. 类A一定是类C的友元 B. 类C一定是类A的友元 C. 类C的成员函数可以访问类B的对象的任何成员 D. 类A的成员函数可以访问类B的对象的任何成员 5. 假定一个类的构造函数为“A(int i=4, int j=0) {a=i;b=j;}”, 则执行“A x (1);”语 句后,x.a和x.b的值分别为( ) A. 1和0 B. 1和4 C. 4和0 D. 4和1 6. 关于this指针使用说法正确的是( ) A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码 B. 保证基类私有成员在子类中可以被访问。 C. 保证基类保护成员在子类中可以被访问。 D. 保证基类公有成员在子类中可以被访问。 7. 所谓多态性是指 ( ) A. 不同的对象调用不同名称的函数 B. 不同的对象调用相同名称的函数 C. 一个对象调用不同名称的函数 D. 一个对象调用不同名称的对象 8. 友元关系不能( ) A. 提高程序的运行效率 B. 是类与类的关系 C. 是一个类的成员函数与另一个类的关系 D. 继承 9. 语句ofstream f(“TEMP.DAT”,ios::app|ios::binary)?的功能是建立流对象f,试图打 开文件TEMP.DAT 并与之连接,并且( ) A. 若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件 B. 若文件存在,将其置为空文件;若文件不存在,打开失败 C. 若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件 D. 若文件存在,打开失败;若文件不存在,建立一个新文件 10. 构造函数不具备的特征是( ) A. 构造函数的函数名与类名相同 B. 构造函数可以重载 C. 构造函数可以设置默认参数 D. 构造函数必须指定类型说明 二、填空题。 1. 单目运算符作为类成员函数重载时,形参个数为___个。