南开23秋学期(高起本:1709-2103、专升本高起专:2003-2103)《面向对象程序设计》在线作业【标准答案】

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2024-02-20 11:28

23秋学期(高起本:1709-2103、专升本/高起专:2003-2103)《面向对象程序设计》在线作业-00003 试卷总分:100 得分:100 一、单选题 (共 35 道试题,共 70 分) 1.将一个函数声明为某类的友元函数
23秋学期(高起本:1709-2103、专升本/高起专:2003-2103)《面向对象程序设计》在线作业-00003
试卷总分:100  得分:100
一、单选题 (共 35 道试题,共 70 分)
1.将一个函数声明为某类的友元函数后,则在函数中不可以直接访问该类的()。
A.公有成员
B.私有成员
C.保护成员
D.都可访问
 
2.声明一个类的对象时,系统自动调用( )函数。
A.成员函数
B.构造函数
C.析构函数
D.普通函数
 
3.以成员函数方式重载运算符“>”,则obj1>obj2被C++编译器解释为()。
A.operator>(obj1,obj2)
B.>(obj1,obj2)
C.obj1.operator>(obj2)
D.obj2.operator>(obj1)
 
4.下列引用的定义中,( )是错误的。
A.int i; int &j=i;
B.int i; int &j; j=i;
C.float i; float &j=i;
D.char d; char &k=d;
 
5.假定X为一个类,执行X a[3],*p[2];语句时会自动调用该类的构造函数( )次。
A.2
B.3
C.4
D.5
 
6.在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则()。
A.完全相同
B.完全不同
C.部分相同,部分不同
D.以上都不对
 
7.在C++中,通过()的机制可以对原有的类进行扩充和完善以适应新的需要。
A.继承
B.封装
C.多态
D.重载
 
8.关于纯虚函数和抽象类的描述中,错误的是()。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现。
B.抽象类是指具有纯虚函数的类。
C.一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
D.抽象类作为基类来使用,其纯虚函数的实现由派生类给出。
 
9.下列类中( )是输入/输出流类iostream的派生类。
A.fstream
B.ofstream
C.ifstream
D.ostream
 
10.关于多继承二义性的描述中,错误的是()。
A.一个派生类的基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性
B.解决二义性的最常用的方法是对成员名的限定法
C.基类和派生类同时出现的同名函数,也存在二义性问题
D.一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类, 对该基类成员进行访问时,可能出现二义性
 
11.下列关于类的继承描述中,( )是错误的。
A.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
B.派生类也是基类,但基类不一定具有派生类的全部属性和方法
C.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
D.一个基类可以有多个派生类,一个派生类可以有多个基类
 
12.类A是类B的友元,类B是类C的友元,则( )是正确的。
A.类B是类A的友元
B.类C是类A的友元
C.类A是类C的友元
D.以上都不对
 
13.假设堆内存分配均成功,则下面程序段完全正确的是()。
A.int *p=new int(3);cout<<*p;delete p;
B.int *p=new int[5]={1,2,3,4,5};for(int i=0;i<5;i++)cout<<p[i];delete []p;
C.int *p=new int[5];for(int i=0;i<5;i++,p++) {*p=i; cout<<*p;}delete []p;
D.以上程序段均正确
 
14.进行文件操作时需要包含_ ()头文件。
A.iostream
B.fstream
C.stdio
D.stdlib
 
15.如果类A被说明成类B的友元,则()。
A.类A的成员函数不得访问类B的所有成员
B.类A的成员函数可以访问类B的所有成员
C.类A的成员即类B的成员
D.类B的成员即类A的成员
 
16.下列关于拷贝构造函数的描述中,错误的是()。
A.一个类可以定义多个拷贝构造函数
B.若未定义拷贝构造函数,则系统会提供一个默认拷贝构造函数
C.当类中有指针成员变量时,通常要为这个类定义一个拷贝构造函数来实现深拷贝
D.拷贝构造函数中的参数按引用方式传递
 
17.下面对静态数据成员的描述中,正确的是()。
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以被该类的对象调用
C.静态数据成员不能受private控制符的作用
D.静态数据成员可以直接用类名访问
 
18.下列虚基类的声明中正确的是( )。
A.class virtual B:public A
B.virtual class B:public
C.class B:public A virtual
D.class B: virtual public A
 
19.不论派生类以何种方法继承基类,都不能使用基类的( )。
A.public成员
B.private成员
C.protected成员
D.private成员和protected成员
 
20.结构化程序设计方法以()为中心进行分析和设计。
A.结构
B.模块
C.对象
D.类
 
21.多继承的构造函数顺序可分为如下4步: ①所有非虚基类的构造函数按照它们被继承的顺序构造。 ②所有虚基类的构造函数按照它们被继承的顺序构造。 ③所有子对象的构造函数按照它们声明的顺序构造。 ④派生类自己的构造函数体 这四个步骤的正确顺序是()。
A.④③①②
B.②④③①
C.②①③④
D.③④①②
 
22.在表达式x+y*z中,+ 是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是()。
A.operator+有两个参数,operator*有两个参数
B.operator+有两个参数,operator*有一个参数
C.operator+有一个参数,operator*有两个参数
D.operator+有一个参数,operator*有一个参数
 
23.下列关于运算符重载的描述中,()是正确的。
A.运算符重载可以改变操作数的个数
B.运算符重载可以改变优先级
C.运算符重载可以改变结合性
D.运算符重载不可以改变语法结构
 
24.下列关于类和对象的叙述中,错误的是()。
A.一个类只能有一个对象
B.对象是类的具体实例
C.类是某一类对象的抽象
D.类和对象的关系是一种数据类型与变量的关系
 
25.类的默认的无参构造函数()。
A.在任何情况下都存在
B.仅当未定义无参构造函数时存在
C.仅当未定义有参构造函数时存在
D.仅当未定义任何构造函数时存在
 
26.下面说法中正确的是( )。
A.一个类只能定义一个构造函数,但可以定义多个析构函数
B.一个类只能定义一个析构函数,但可以定义多个构造函数
C.构造函数与析构函数同名,只要名字前加了一个求反符号(~)
D.构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以
 
27.下列关于成员访问权限的描述中,不正确的是( )。
A.公有数据成员和公有成员函数都可以通过类对象直接访问
B.类的私有数据成员只能被公有成员函数以及该类的任何友元类或友元函数访问
C.保护成员在派生类中可以被访问,而私有成员不可以
D.类或派生类的成员函数可以访问保护成员
 
28.对基类和派生类的描述中错误的是( )。
A.派生类是基类的具体化
B.基类继承了派生类的属性
C.派生类是基类定义的延续
D.派生类是基类的特殊化
 
29.下列对重载函数的描述中,( )是错误的。
A.重载函数中不允许使用默认参数
B.重载函数中编译时根据参数表进行选择
C.不要使用重载函数来描述毫无相干的函数
D.构造函数重载将会给初始化带来多种方式
 
30.对于类定义 class A{ public: virtual void funcl(){} void func2(){} }; class B:public A{ public: void func1(){cout<<"class B func1"<<endl;} virtual void func2(){cout<<"class B func2"<<endl;} };下面正确的叙述是( )。
A.A::func2()和B::func1()都是虚函数
B.A::func2()和B::func1()都不是虚函数
C.B::func1()是虚函数,A::func2()不是虚函数
D.B::func1()不是虚函数,A::func2()是虚函数
 
31.在C++中,能被派生类继承的函数是( )。
A.成员函数
B.构造函数
C.析构函数
D.拷贝构造函数
 
32.派生类中的成员不能访问基类中的()。
A.私有成员
B.公有成员
C.保护成员
D.以上都可以
 
33.下列关于动态联编的描述中,错误的是()。
A.动态联编是以虚函数为基础的
B.动态联编是在运行时确定所调用的函数代码的
C.动态联编调用函数操作是通过指向对象的指针或对象
D.动态联编是在编译时确定操作函数的
 
34.在C++中,打开一个文件就是将这个文件与一个()建立关联;关闭一个文件就是取消这种关联。
A.流
B.类
C.结构
D.对象
 
35.下列关于运算符重载的描述中,正确的是()。
A.运算符重载可以改变操作数的个数
B.运算符重载可以改变运算符的优先级
C.运算符重载可以改变运算符的结合性
D.运算符重载可以使运算符实现特殊功能
 
二、判断题 (共 15 道试题,共 30 分)
36.定义纯虚函数所用的关键字是purevirtual。
 
37.对一个类中的数据成员的初始化,可以通过构造函数来实现。
 
38.在C++中,可以声明虚构造函数和虚析构函数。
 
39.int *p=new int[5];表示为指针变量p分配了一个int型元素空间,并将该片内存空间的值初始化为5。
 
40.C++中用户定义的标识符可以与系统关键字同名。
 
41.编程是将所设计的算法转换成计算机能够运行的代码的过程。
 
42.多重继承中的二义性问题是由于一个派生类从不同基类中继承了同名成员变量或相同函数原型的成员函数。
 
43.含有纯虚函数的类是抽象类。
 
44.设要把一个文件输出流对象myFile与文件“f:\myText.txt”相关联,所用的C++语句是ifstream myFile("f:\\myText.txt",ios::in|ios::out);
 
45.在面向对象程序设计中,具有相同属性和方法的一组对象的集合称为类。
 
46.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。
 
47.纯虚函数是一种特殊的成员函数,它是一种没有具体实现的虚函数。
 
48.具有纯虚函数的类是抽象类,它的特点是不可以定义对象。
 
49.一个类的静态数据成员被该类的所有对象共享。
 
50.运算符重载的形式有两种:成员函数形式和友元形式。
 
Tag:  

作业咨询:
点击这里给我发消息

论文咨询:
点击这里给我发消息

合作加盟:
点击这里给我发消息

服务时间:
8:30-24:00(工作日)