22秋学期(高起本1709-1803、全层次1809-2103)《面向对象程序设计》在线作业-00001
试卷总分:100 得分:100
一、单选题 (共 35 道试题,共 70 分)
1.对虚函数的调用()。
A.一定使用动态联编
B.一定使用静态联编
C.必须使用动态联编
D.不一定使用动态联编
2.下列虚基类的声明中正确的是( )。
A.class virtual B:public A
B.virtual class B:public
C.class B:public A virtual
D.class B: virtual public A
3.已知类X中的一个成员函数说明如下: Void Set(X &a); 其中,X &a的含义是( )。
A.a是指向X类对象的指针,用来作为Set()的形参
B.将a的地址传递给Set()函数
C.a是X类对象的引用,用来做为Set()的形参
D.以上都不对
4.下面对静态数据成员的描述中,正确的是( )。
A.静态数据成员是类的所有对象共享的数据
B.类的每个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值
D.静态数据成员不能通过类的对象访问
5.下列程序中说明的公有成员是( ) class Location { int X; public: void init(int initX,int initY); private: int Y; public: int GetX(); int GetY(); };
A.X
B.init(int initX,int initY)
C.GetX(),GetY()
D.B和C都是
6.在C++中,通过()的机制可以对原有的类进行扩充和完善以适应新的需要。
A.继承
B.封装
C.多态
D.重载
7.要求打开文件 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);
8.下列程序段中具有相同值的是( ) class Base {int b;}; class Base1:virtual public base{int b1;}; class Base2:virtual public base{int b2;}; class derived:public base 1,public base 2{int b3;}; derived d;
A.b与d.base1::b
B.base1::b与 d.base1::b1
C.b与 d. b3
D.base2::b与 d.base2::b2
9.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( )。
A.public成员
B.private成员
C.protected成员
D.友元
10.假定X为一个类,执行X a[3],*p[2];语句时会自动调用该类的构造函数( )次。
A.2
B.3
C.4
D.5
11.下列关于构造函数调用顺序的描述中,正确的是()。
A.创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数
B.创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数
C.创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
D.创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数
12.若类中有指针成员变量,则应编写(),使得在对象销毁时能够自动调用该函数释放指针成员变量所指向的内存空间。
A.友元函数
B.虚函数
C.构造函数
D.析构函数
13.关于下面程序段说法正确的是( ) 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)函数中不能访问对象的私有成员
14.关于虚函数,下列表述正确的是( )。
A.如果在重定义虚函数时使用virtual,则该重定义函数仍然是虚函数
B.虚函数不得声明为静态函数
C.虚函数不得声明为另一个类的友元函数
D.派生类必须重新定义基类的虚函数
15.关于纯虚函数和抽象类的描述中,错误的是()。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现。
B.抽象类是指具有纯虚函数的类。
C.一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
D.抽象类作为基类来使用,其纯虚函数的实现由派生类给出。
16.下列关于构造函数说法不正确的是()。
A.构造函数必须与类同名
B.构造函数可以省略不写
C.构造函数必须有返回值
D.在构造函数中可以对类中的成员进行初始化
17.若析构函数是虚函数,则delete对析构函数的调用采用( )。
A.静态联编
B.动态联编
C.重载函数
D.多重函数
18.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( )。
A.public成员
B.private成员
C.protected成员
D.友元
19.程序在调用重载函数时,根据()区分到底要调用哪个函数。
A.函数名
B.返回值类型
C.参数个数和类型
D.以上都可以
20.下列关于对象数组的描述中,错误的是( )。
A.对象数组的下标是从0开始的
B.对象数组的数组名是一个常量指针
C.对象数组的每个元素是同一个类的对象
D.对象数组只能赋初值,而不能在定义后赋值
21.“#include <iostream>”是()预处理命令。
A.宏定义
B.文件包含
C.条件编译
D.工程配置
22.下面叙述不正确的是( )。
A.基类的保护成员在派生类中仍然是保护的
B.基类的保护成员在公有派生类中仍然是保护的
C.基类的保护成员在私有派生类中是私有的
D.对基类成员的访问必须是无二义性
23.下面对友元的错误描述是( )。
A.关键字friend用于声明友元
B.一个类的成员函数可以是另一个类的友元
C.友元函数访问对象的成员不受访问特性影响
D.友元函数通过this指针访问对象成员
24.如果类A被说明成类B的友元,则()。
A.类A的成员函数不得访问类B的所有成员
B.类A的成员函数可以访问类B的所有成员
C.类A的成员即类B的成员
D.类B的成员即类A的成员
25.一个类的友元函数能够访问该类的( )。
A.私有成员
B.保护成员
C.公有成员
D.所有成员
26.下列关于拷贝构造函数的描述中,错误的是()。
A.一个类可以定义多个拷贝构造函数
B.若未定义拷贝构造函数,则系统会提供一个默认拷贝构造函数
C.当类中有指针成员变量时,通常要为这个类定义一个拷贝构造函数来实现深拷贝
D.拷贝构造函数中的参数按引用方式传递
27.下列关于运算符重载的描述中,()是正确的。
A.运算符重载可以改变操作数的个数
B.运算符重载可以改变优先级
C.运算符重载可以改变结合性
D.运算符重载不可以改变语法结构
28.下列( )是构造函数的特征。
A.构造函数在创建对象时自动调用
B.构造函数不可以重载
C.构造函数不可以设置默认参数
D.构造函数必须指定函数类型
29.执行语句“string str("abc");”时,系统会自动调用string类的构造函数()。
A.string()
B.string(const char *s)
C.string(const string &str)
D.string(size_type n, char c)
30.以成员函数方式重载运算符“>”,则obj1>obj2被C++编译器解释为()。
A.operator>(obj1,obj2)
B.>(obj1,obj2)
C.obj1.operator>(obj2)
D.obj2.operator>(obj1)
31.已知“float *p; p=new float[2];”,若要释放p所指向的堆中的这些字节,下列语句正确的是()。
A.delete p;
B.delete p[];
C.delete []p;
D.delete p[2];
32.建立类模板对象的实例化过程为( )。
A.基类->派生类
B.构造函数->对象
C.模板类->对象
D.模板类->模板函数
33.撤消对象时,系统自动调用( )函数。
A.成员函数
B.构造函数
C.析构函数
D.普通函数
34.下列关于赋值运算符重载的说法中正确的是()。
A.返回值一般是以引用方式返回的对象,而函数体中总是用语句“return *this;”返回this指针所指向的对象
B.赋值运算符只能以非成员函数的方式重载
C.赋值运算符既可以以成员函数的方式重载,又可以以非成员函数的方式重载
D.以上均不正确
35.关于动态关联的下列叙述中,()是错误的。
A.动态关联是以虚函数为基础的
B.动态关联调用虚函数操作是指向对象的指针或引用
C.动态关联是在运行时确定所调用的函数代码的
D.动态关联是在编译时确定操作函数的
二、判断题 (共 15 道试题,共 30 分)
36.定义重载函数时,应保证函数类型有所不同。
37.运算符[]只能用成员运算符来重载,不能用友元运算符来重载。
38.纯虚函数是一种特殊的成员函数,它是一种没有具体实现的虚函数。
39.已知Circle类对象c,Circle类中有一个setCenter成员函数,如果c.setCenter(...)返回值仍然是c,则setCenter函数中的return语句应写作return this;。
40.当一个函数的返回值是类对象时,则该函数执行结束后会自动调用拷贝构造函数初始化一个临时对象。
41.在类内部定义的public数据可以在类外进行存取。
42.定义虚函数所用的关键字是virtual。
43.重载函数可以带默认参数值,但要注意二义性。
44.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
45.构造函数说明为纯虚函数是没有意义的。
46.函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。
47.只有返回引用的函数可以作为赋值语句的左值。
48.打开ASCII码流文件和二进制流文件时,打开方式是相同的。
49.运算符重载实际上是对已有的运算符重新定义其功能。
50.类的静态成员函数中不能访问非静态成员。
奥鹏,国开,广开,电大在线,各省平台,新疆一体化等平台学习
详情请咨询QQ : 3230981406或微信:aopopenfd777