open 发表于 2016-12-12 09:03:41

16秋学期南开面向对象程序设计在线作业满分答案

16秋学期《面向对象程序设计》在线作业

一、单选题:
1.将一个string类对象赋予新值,应该使用string类的(    )函数。          (满分:2)
    A. assign
    B. insert
    C. swap
    D. find
2.在派生类中重新定义虚函数时,除了(    ),其他方面都应与基类中相应的虚函数保持一致。          (满分:2)
    A. 函数名
    B. 参数
    C. 函数体
    D. 返回值类型
3.交换两个string类对象所表示的字符串的内容,应该使用string类的(    )函数。          (满分:2)
    A. assign
    B. insert
    C. swap
    D. find
4.单目运算符作为类成员函数重载时(    )。          (满分:2)
    A. 有形参
    B. 没有形参
    C. 有实参
    D. 以上都不正确
5.有如下类声明: class Sample { int x; }; 则Sample类成员x是Sample类的(    )。          (满分:2)
    A. 公有数据成员
    B. 保护数据成员
    C. 私有数据成员
    D. 以上选项都不正确
6.一个类的友元函数或友元类能够通过成员操作符访问该类的(    )。          (满分:2)
    A. 私有成员
    B. 保护成员
    C. 公有成员
    D. 所有成员
7.下列关于动态联编的描述中,错误的是(    )。          (满分:2)
    A. 动态联编是以虚函数为基础的
    B. 动态联编是在运行时确定所调用的函数代码的
    C. 动态联编调用函数操作是通过指向对象的指针或对象
    D. 动态联编是在编译时确定操作函数的
8.类的默认的无参构造函数(    )。          (满分:2)
    A. 在任何情况下都存在
    B. 仅当未定义无参构造函数时存在
    C. 仅当未定义有参构造函数时存在
    D. 仅当未定义任何构造函数时存在
9.类MyClass的定义如下:class MyClass{public:      MyClass(    ) { value = 0;}      SetVariable(int i) { value = i; }private:      int value;}则对下列语句序列正确的描述是(    )。 MyClass *p,my;p=&my;          (满分:2)
    A. 语句p=&my;是把对象my赋值给指针变量p
    B. 语句MyClass *p,my;会调用两次类MyClass的构造函数
    C. 对语句 *p.SetVariable(5)的调用是正确的
    D. 语句p->SetVariable(5)与语句my.SetVariable(5)等价
10.静态数据成员初始化在(    )进行,而且前面不加static,以免与一般静态变量或对象相混淆。          (满分:2)
    A. 类体内
    B. 类体外
    C. 构造函数内
    D. 内联函数内
11.下面描述中,错误的是(    )。          (满分:2)
    A. 公有继承时,基类中的public成员在派生类中仍是public的
    B. 公有继承时,基类中的private成员在派生类中仍是private的
    C. 公有继承时,基类中的protected成员在派生类中仍是protected的
    D. 私有继承时,基类中的public成员在派生类中是private的
12.类对象占用内存的大小与(    )有关。          (满分:2)
    A. 数据成员
    B. 成员函数
    C. 数据成员和成员函数
    D. 私有成员
13.下面对静态数据成员的描述中,正确的是(    )。          (满分:2)
    A. 静态数据成员可以在类体内进行初始化
    B. 静态数据成员不可以被该类的对象调用
    C. 静态数据成员不能受private控制符的作用
    D. 静态数据成员可以直接用类名访问
14.抽象类的作用主要是(    )。          (满分:2)
    A. 直接用作基类
    B. 直接用作指针
    C. 引用的基类型
    D. 包括以上各项
15.下列关于构造函数调用顺序的描述中,正确的是(    )。          (满分:2)
    A. 创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数
    B. 创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数
    C. 创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
    D. 创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数
16.派生类中的成员不能访问基类中的(    )。          (满分:2)
    A. 私有成员
    B. 公有成员
    C. 保护成员
    D. 以上都可以
17.假定MyClass为一类,执行MyClass a,b(2),*p;语句时会自动调用该类构造函数(    )次。          (满分:2)
    A. 2
    B. 3
    C. 4
    D. 5
18.抽象类不能定义对象,但可以声明抽象类的(    )。          (满分:2)
    A. 指针或引用
    B. 函数返回类型
    C. 显式转换
    D. 以上都是
19.下列关于继承的描述中,错误的是(    )。          (满分:2)
    A. 基类中的析构函数不能被派生类继承
    B. 基类中的保护成员在派生类中无法直接访问
    C. 派生类的成员除了包括派生类中自己定义的成员外,还包括它从基类继承的成员
    D. 在公有继承方式下基类中公有成员和保护成员的访问权限到派生类保持不变
20.在使用类创建对象时,系统会自动调用该对象的(    )完成对象中数据成员的初始化等操作。          (满分:2)
    A. 友元函数
    B. 虚函数
    C. 构造函数
    D. 析构函数
21.在一个类中,可以对一个操作符进行(    )重载。          (满分:2)
    A. 1种
    B. 2种
    C. 3种
    D. 多种
22.下面关于构造函数和析构函数的描述,错误的是(    )。          (满分:2)
    A. 析构函数中调用虚函数采用静态联编
    B. 对虚析构函数的调用可以采用动态联编
    C. 当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数
    D. 构造函数可以声明为虚函数
23.有关带默认参数的函数的描述正确的是(    )。          (满分:2)
    A. 只能在函数定义时设置默认参数值
    B. 只能在函数声明时设置默认参数值
    C. 函数调用时,必须使用默认的参数值,不能给出新的实参值
    D. 设置默认参数时,应该设置最右边的若干个参数的默认值
24.如果一个类至少有一个纯虚函数,那么就称该类是(    )。          (满分:2)
    A. 抽象类
    B. 虚基类
    C. 派生类
    D. 以上都不对
25.以下为重载函数的一组函数声明的是(    )。          (满分:2)
    A. void print(int);void print(double);
    B. void fun(int);   int fun(int);
    C. int max(int
    int);int min(int
    int);
    D. void mm(    );   int mm(    );
26.下面叙述中错误的是(    )。          (满分:2)
    A. 派生类可以使用private派生
    B. 对基类成员的访问必须是无二义性的
    C. 基类成员的访问能力在派生类中维持不变
    D. 赋值兼容规则也适用于多继承的组合
27.在一个string类对象表示的字符串中查找子串,应该使用string类的(    )函数。          (满分:2)
    A. assign
    B. insert
    C. swap
    D. find
28.关于纯虚函数和抽象类的描述中,错误的是(    )。          (满分:2)
    A. 纯虚函数是一种特殊的虚函数,它没有具体的实现。
    B. 抽象类是指具有纯虚函数的类。
    C. 一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
    D. 抽象类作为基类来使用,其纯虚函数的实现由派生类给出。
29.要在类对象上使用运算符,以下不用必须被重载的运算符是(    )。          (满分:2)
    A. [ ]
    B. =
    C. ++
    D. --
30.如果类A被说明成类B的友元,则(    )。          (满分:2)
    A. 类A的成员函数不得访问类B的所有成员
    B. 类A的成员函数可以访问类B的所有成员
    C. 类A的成员即类B的成员
    D. 类B的成员即类A的成员
31.下列运算符中,(    )在C++中不能重载。          (满分:2)
    A. ?
32.“#include ”是(    )预处理命令。          (满分:2)
    B. +
    C. -
    D. <=
33.结构化程序设计方法以(    )为中心进行分析和设计。          (满分:2)
    A. 宏定义
    B. 文件包含
    C. 条件编译
    D. 工程配置
34.下列关于运算符重载的描述中,正确的是(    )。          (满分:2)
    A. 结构
    B. 模块
    C. 对象
    D. 类
35.下面关于私有继承方式的论述中错误的是(    )。          (满分:2)
    A. 运算符重载可以改变操作数的个数
    B. 运算符重载可以改变运算符的优先级
    C. 运算符重载可以改变运算符的结合性
    D. 运算符重载可以使运算符实现特殊功能
三、判断题:
1.对虚函数的调用,系统都是采用动态联编。          (满分:2)
    A. 基类中的私有成员对其对象不可见
    B. 基类中的私有成员对其派生类不可见
    C. 基类中的公有成员对其派生类可见
    D. 基类中的保护成员对其派生类不可见
2.以友元方式重载运算符时,形参列表中至少有一个参数必须是自定义数据类型。          (满分:2)
    A. 错误
    B. 正确
3.一个类的静态数据成员被该类的所有对象共享。          (满分:2)
    A. 错误
    B. 正确
4.在派生类构造函数的成员初始化列表中,可以包含基类构造函数的调用。          (满分:2)
    A. 错误
    B. 正确
5.在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。          (满分:2)
    A. 错误
    B. 正确
6.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:AB operator+(AB &,AB &);          (满分:2)
    A. 错误
    B. 正确
7.抽象类不能定义对象,但可以声明抽象类的指针或引用。          (满分:2)
    A. 错误
    B. 正确
8.基类类型的指针可以指向其派生类对象。          (满分:2)
    A. 错误
    B. 正确
9.类中所提供的成员函数可以直接访问该类的私有成员。          (满分:2)
    A. 错误
    B. 正确
10.构造函数不能被派生类继承。          (满分:2)
    A. 错误
    B. 正确
11.定义一个虚基类后,则该虚基类后继类层次中的类都需要调用虚基类的构造函数对虚基类中定义的成员变量进行初始化。          (满分:2)
    A. 错误
    B. 正确
12.a为MyClass类对象,“static void SetRate(double r){...}”是MyClass类的静态成员函数,则执行语句“a.SetRate(0.05);”时,SetRate成员函数中的this指针指向对象a的地址。          (满分:2)
    A. 错误
    B. 正确
13.私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。          (满分:2)
    A. 错误
    B. 正确
14.抽象类虽然也是一种数据类型,但它不能建立对象,只能作为基类被其他类继承。          (满分:2)
    A. 错误
    B. 正确
15.在C++程序中,有且仅能有一个主函数,且其函数名必须是main。          (满分:2)
    A. 错误
    B. 正确

**** Hidden Message *****
页: [1]
查看完整版本: 16秋学期南开面向对象程序设计在线作业满分答案