23秋学期(仅限-高起专1909、专升本1909)《面向对象程序设计》在线作业-00003
试卷总分:100 得分:100
一、单选题 (共 35 道试题,共 70 分)
1.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A::func()将( )。
A.调用类A中是函数func()
B.调用类B中是函数func()
C.根据P所指的对象类型而确定调用A中或类B中的函数func()
D.既调用类A中函数,也调用类B中的函数
2.假设A为抽象类,下列语句( )是正确的。
A.A fun(int);
B.A *p;
C.int fun(A);
D.A Obj;
3.在C++中,关于下列设置参数默认值的描述中,正确的是( )。
A.不允许设置参数的默认值
B.设置参数默认值只能在定义函数时设置
C.设置参数默认值时,应该是先设置右边的再设置左边的
D.设置参数默认值时,应该全部参数都设置
4.若类A和类B的定义如下: class A { int i,j; public: void get(); }; class B:A//默认为私有派生 { int k; public; void make(); }; void B:: make() { k=i*j; } 则上述定义中,()是非法的表达式。
A.void get();
B.int k;
C.void make();
D.k=i*j;
5.下面叙述中错误的是()。
A.派生类可以使用private派生
B.对基类成员的访问必须是无二义性的
C.基类成员的访问能力在派生类中维持不变
D.赋值兼容规则也适用于多继承的组合
6.关于this指针的说法错误的是( )。
A.this指针必须显示说明
B.当创建一个对象后,this指针就指向该对象
C.成员函数拥有this指针
D.静态成员函数不拥有this指针
7.将一个函数声明为某类的友元函数后,则在函数中不可以直接访问该类的()。
A.公有成员
B.私有成员
C.保护成员
D.都可访问
8.有关析构函数的说法正确的是( )。
A.析构函数可以有多个
B.析构函数和构造函数一样可以有形参
C.析构函数的功能是用来释放一个对象
D.析构函数的函数类型为void
9.结构化程序设计方法以()为中心进行分析和设计。
A.结构
B.模块
C.对象
D.类
10.对于下面定义的类A在函数f()中将对象成员n的值修改为60的语句应该是( ) class A { public: A(int x){n=x;} void SetNum(int n1){n=n1;} private: int n; } int f() { A*ptr=new A(6); }
A.A(60)
B.SetNum(60)
C.ptr->SetNum(60)
D.ptr->n=60
11.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是()。
A.派生类的对象可以赋给基类对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类的成员
D.派生类的对象的地址可以赋给指向基类的指针
12.多继承的构造函数顺序可分为如下4步: ①所有非虚基类的构造函数按照它们被继承的顺序构造。 ②所有虚基类的构造函数按照它们被继承的顺序构造。 ③所有子对象的构造函数按照它们声明的顺序构造。 ④派生类自己的构造函数体 这四个步骤的正确顺序是()。
A.④③①②
B.②④③①
C.②①③④
D.③④①②
13.有关构造函数说法不正确的是( )。
A.构造函数的名字和类的名字一样
B.在创建对象时,系统自动调用构造函数
C.构造函数无任何函数类型
D.构造函数有且只有一个
14.下列关于构造函数说法不正确的是()。
A.构造函数必须与类同名
B.构造函数可以省略不写
C.构造函数必须有返回值
D.在构造函数中可以对类中的成员进行初始化
15.关于下面程序段说法正确的是( ) class X { private: int n; public: X(X&); }; X::X(X&x) {n=x.n} X obj1,obj2(obj1);
A.语句obj2(obj1);的功能是用对象obj1初始化具有相同类类型的对象obj2
B.语句obj2(obj1);的功能是用对象obj2初始化具有相同类类型的对象obj1
C.X(X&x)中的&符号可以删除
D.X(X&x)函数中不能访问对象的私有成员
16.下列关于类的继承描述中,( )是错误的。
A.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
B.派生类也是基类,但基类不一定具有派生类的全部属性和方法
C.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
D.一个基类可以有多个派生类,一个派生类可以有多个基类
17.抽象类的作用主要是()。
A.直接用作基类
B.直接用作指针
C.引用的基类型
D.包括以上各项
18.已知X类,则当程序执行到语句 X array[3]; 时,调用了( )次构造函数。
A.0
B.1
C.2
D.3
19.下面对友元的错误描述是( )。
A.关键字friend用于声明友元
B.一个类的成员函数可以是另一个类的友元
C.友元函数访问对象的成员不受访问特性影响
D.友元函数通过this指针访问对象成员
20.对基类和派生类的描述中错误的是( )。
A.派生类是基类的具体化
B.基类继承了派生类的属性
C.派生类是基类定义的延续
D.派生类是基类的特殊化
21.下列关于成员访问权限的描述中,不正确的是( )。
A.公有数据成员和公有成员函数都可以通过类对象直接访问
B.类的私有数据成员只能被公有成员函数以及该类的任何友元类或友元函数访问
C.保护成员在派生类中可以被访问,而私有成员不可以
D.类或派生类的成员函数可以访问保护成员
22.( )的功能是对对象进行初始化。
A.析构函数
B.数据成员
C.构造函数
D.静态数据成员
23.关于多继承二义性的描述中,错误的是()。
A.一个派生类的基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性
B.解决二义性的最常用的方法是对成员名的限定法
C.基类和派生类同时出现的同名函数,也存在二义性问题
D.一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类, 对该基类成员进行访问时,可能出现二义性
24.动态联编所支持的多态性是( )。
A.虚函数
B.继承
C.编译时的多态性
D.运行时的多态性
25.下列( )不是构造函数的特征。
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明
26.不论派生类以何种方法继承基类,都不能使用基类的( )。
A.public成员
B.private成员
C.protected成员
D.private成员和protected成员
27.要求打开文件 d:\file.dat,可写入数据,正确的语句是( )。
A.ifstream infile("d:\file.dat", ios::in);
B.ifstream infile("d:\\file.dat", ios::in);
C.ofstream infile("d:\file.dat", ios::out);
D.fstream infile("d:\\file.dat", ios::in| ios::out);
28.下列函数中,可以作为虚函数的是( )。
A.普通函数
B.构造函数
C.静态成员函数
D.析构函数
29.一个类的友元函数或友元类能够通过成员操作符访问该类的()。
A.私有成员
B.保护成员
C.公有成员
D.所有成员
30.下列虚基类的声明中,正确的是()。
A.class virtual B:public A
B.virtual class B:public A
C.class B: public A virtual
D.class B: virtual public A
31.在类的定义形式中,数据成员、成员函数和( )组成了类定义体。
A.成员的访问控制信息
B.公有消息
C.私有消息
D.保护消息
32.关于纯虚函数,下列表述正确的是( )。
A.纯虚函数是未给出实现版本(即无函数体定义)的虚函数
B.纯虚函数的声明总是以“=0”结束
C.派生类必须实现基类的纯虚函数
D.含有纯虚函数的类一定是派生类
33.下列运算符中,()运算符在C++中不能重载。
A.?:
B.+
C.-
D.=
34.基类和派生类可以分别叫做( )。
A.“大类”和“小类”
B.“父类”和“子类”
C.“小类”和“大类”
D.“子类”和“父类”
35.this指针是C++实现( )的一种机制。
A.抽象
B.封装
C.继承
D.重载
二、判断题 (共 15 道试题,共 30 分)
36.可以在类的构造函数中对静态数据成员进行初始化。
37.定义模板的关键字是template。
38.类的常量数据成员的值只能在创建对象时初始化,初始化后不得再修改。
39.析构函数不能被继承。
40.一个类的构造函数中可以不包含对其子对象的初始化。
41.在C++中,虚函数帮助实现了类的封装性。
42.cout后面的符号是<<。
43.函数模板可以与普通函数重载。
44.在类体中可以在声明成员变量的同时为其赋初值。
45.在保护继承中,对于派生类的访问同于公有继承,而对于派生类的对象的访问同于私有继承。
46.通过C++语言中类的继承机制,可以扩充和完善已有类以适应新的需求。
47.通过指针或引用可以调用不同对象相同名称的函数,但可导致完全不同的行为的现象称为二义性。
48.定义一个虚基类后,则该虚基类后继类层次中的类都需要调用虚基类的构造函数对虚基类中定义的成员变量进行初始化。
49.定义虚函数所用的关键字是virtual。
50.拷贝构造函数通常使用已有对象的引用来初始化创建中的对象。