20秋学期1909《面向对象程序设计》在线作业 2.docx
《20秋学期1909《面向对象程序设计》在线作业 2.docx》由会员分享,可在线阅读,更多相关《20秋学期1909《面向对象程序设计》在线作业 2.docx(11页珍藏版)》请在冰豆网上搜索。
20秋学期1909《面向对象程序设计》在线作业2
20秋学期(1709、1803、1809、1903、1909、2003、2009)《面向对象程序设计》在线作业
已知“inta=10,*p;int*&r=p;r=&a;*p=20;cout<<a;”,则输出为()。
A:
10
B:
20
C:
不确定值
D:
程序有错误
答案:
B
可以用p.a的形式访问派生类对象p的基类成员a其中a是()。
A:
私有继承的公有成员
B:
公有继承的私有成员
C:
公有继承的保护成员
D:
公有继承的公有成员
答案:
D
下列关于虚函数的说明中,正确的是()。
A:
从虚基类继承的函数都是虚函数
B:
虚函数不得是静态成员函数
C:
只能通过指针或引用调用虚函数
D:
抽象类中的成员函数都是虚函数
答案:
B
在一个string类对象表示的字符串中查找子串,应该使用string类的()函数。
A:
assign
B:
insert
C:
swap
D:
find
答案:
D
执行语句“stringstr("abc");”时,系统会自动调用string类的构造函数()。
A:
string()
B:
string(constchar*s)
C:
string(conststring&str)
D:
string(size_typen,charc)
答案:
B
下面说法中正确的是()。
A:
一个类只能定义一个构造函数,但可以定义多个析构函数
B:
一个类只能定义一个析构函数,但可以定义多个构造函数
C:
构造函数与析构函数同名,只要名字前加了一个求反符号(~)
D:
构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以
答案:
B
已知函数原型:
voidf(inta,intb=3,charc='*');则下面的函数调用中,不合法的调用是()。
A:
f(5)
B:
f(5,8)
C:
f(6,,'#')
D:
f(0,0,'#')
答案:
C
()是析构函数的特征。
A:
析构函数可以有一个或多个参数
B:
析构函数定义只能在类体内
C:
析构函数名与类名不同
D:
一个类中只能定义一个析构函数
答案:
D
已知“inta=10;int&r=a;r=r+20;cout<<a;”,则输出为()。
A:
10
B:
20
C:
30
D:
不确定值
答案:
C
关于下面程序段说法正确的是()
classX
{
private:
intn;
public:
X(X&);
};
X:
:
X(X&x){n=x.n}
Xobj1,obj2(obj1);
A:
语句obj2(obj1);的功能是用对象obj1初始化具有相同类类型的对象obj2
B:
语句obj2(obj1);的功能是用对象obj2初始化具有相同类类型的对象obj1
C:
X(X&x)中的&符号可以删除
D:
X(X&x)函数中不能访问对象的私有成员
答案:
A
类aClass的定义如下:
classaClass
{public:
aClass(){}
aClass(inti){value=newint(i);}
int*value;
}
若要对类中的value赋值,则下面的语句中,正确的是()。
A:
aClassmy;my.value=10;
B:
aClassmy;*my.value=10;
C:
aClassmy;my.*value=10;
D:
aClassmy(10);
答案:
D
包含类fstream定义的头文件是()。
A:
fstream
B:
ofstream
C:
ifstream
D:
iostream
答案:
A
如果类A被说明成类B的友元,则()。
A:
类A的成员函数不得访问类B的所有成员
B:
类A的成员函数可以访问类B的所有成员
C:
类A的成员即类B的成员
D:
类B的成员即类A的成员
答案:
B
进行文件操作时需要包含_
()头文件。
A:
iostream
B:
fstream
C:
stdio
D:
stdlib
答案:
B
派生类中的成员不能访问基类中的()。
A:
私有成员
B:
公有成员
C:
保护成员
D:
以上都可以
答案:
A
下列关于类的继承描述中,()是错误的。
A:
派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
B:
派生类也是基类,但基类不一定具有派生类的全部属性和方法
C:
继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
D:
一个基类可以有多个派生类,一个派生类可以有多个基类
答案:
A
要求打开文件d:
\file.dat,可写入数据,正确的语句是()。
A:
ifstreaminfile("d:
\file.dat",ios:
:
in);
B:
ifstreaminfile("d:
\\file.dat",ios:
:
in);
C:
ofstreaminfile("d:
\file.dat",ios:
:
out);
D:
fstreaminfile("d:
\\file.dat",ios:
:
in|ios:
:
out);
答案:
D
空类的声明()是正确的。
A:
class类名;
B:
class类名{};
C:
class类名{}
D:
class类名
答案:
B
对于多重继承,有()。
A:
一个派生类只能有一个基类
B:
一个基类只能产生一个派生类
C:
一个基类必须产生多个派生类
D:
一个派生类可有多个基类
答案:
D
()的功能是对对象进行初始化。
A:
析构函数
B:
数据成员
C:
构造函数
D:
静态数据成员
答案:
C
在C++中,要实现动态联编,可以使用()调用虚函数。
A:
类名
B:
派生类指针
C:
对象名
D:
基类指针
答案:
D
在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是()。
A:
派生类的对象可以直接访问基类的所有成员
B:
派生类的对象可以初始化基类的引用
C:
派生类的对象不可以直接访问基类中的私有成员
D:
派生类的对象的地址可以赋给指向基类的指针
答案:
A
下列关于C++类的描述中错误的是()。
A:
类与类之间可以通过一些手段进行通信和联络
B:
类用于描述事物的属性和对事物的操作
C:
类与类之间必须是平等的关系,而不能组成层次关系
D:
类与类之间可以通过封装而具有明确的独立性
答案:
C
已知X类.则当程序执行到语句X*array=newX[2];时,调用了()次构造函数。
A:
0
B:
1
C:
2
D:
3
答案:
C
下列关于构造函数调用顺序的描述中,正确的是()。
A:
创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数
B:
创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数
C:
创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
D:
创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数
答案:
A
对基类和派生类的描述中错误的是()。
A:
派生类是基类的具体化
B:
基类继承了派生类的属性
C:
派生类是基类定义的延续
D:
派生类是基类的特殊化
答案:
B
声明一个类的对象时,系统自动调用()函数。
A:
成员函数
B:
构造函数
C:
析构函数
D:
普通函数
答案:
B
在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是()。
A:
派生类的对象可以赋给基类对象
B:
派生类的对象可以初始化基类的引用
C:
派生类的对象可以直接访问基类的成员
D:
派生类的对象的地址可以赋给指向基类的指针
答案:
C
在使用类创建对象时,系统会自动调用该对象的()完成对象中数据成员的初始化等操作。
A:
友元函数
B:
虚函数
C:
构造函数
D:
析构函数
答案:
C
下列关于构造函数的描述中,错误的是()。
A:
构造函数可以设置默认参数
B:
构造函数在说明类变量时自动执行
C:
构造函数可以对静态数据成员进行初始化
D:
构造函数可以重载
答案:
C
下列引用的定义中,()是错误的。
A:
inti;int&j=i;
B:
inti;int&j;j=i;
C:
floati;float&j=i;
D:
chard;char&k=d;
答案:
B
在C++中,类与类之间的继承关系具有()。
A:
自反性
B:
对称性
C:
传递性
D:
反对称性
答案:
C
下面关于类的成员函数描述不正确的是()。
A:
静态成员函数内可以直接访问类的非静态成员数据
B:
静态成员函数内可以直接访问类的静态成员数据
C:
非静态成员函数可以直接访问类的非静态成员数据
D:
非静态成员函数可以直接访问类的静态成员数据
答案:
A
在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值()。
A:
不同
B:
相同
C:
相容
D:
部分相同
答案:
B
用于类中虚成员函数说明的关键字()。
A:
virtual
B:
public
C:
protected
D:
private
答案:
A
以app方式打开文件时,当前的读指针和写指针都定位于文件尾。
A:
对
B:
错
答案:
A
派生类对基类继承的成员函数进行重定义后,则通过派生类对象和基类对象调用的都是重定义后的成员函数。
A:
对
B:
错
答案:
B
C++的I/O系统通过流的机制实现文件和控制台的输入输出操作。
A:
对
B:
错
答案:
A
定义重载函数时,应保证函数类型有所不同。
A:
对
B:
错
答案:
B
在一个类中最多只能定义1个构造函数和1个析构函数。
A:
对
B:
错
答案:
B
派生类是从基类派生出来,它不能再生成新的派生类。
A:
对
B:
错
答案:
B
C语言中scanf命令在c++中改用cin。
A:
对
B:
错
答案:
A
预定义的提取符和插入符是可以重载的。
A:
对
B:
错
答案:
A
对象数组的元素可以是不同类的对象。
A:
对
B:
错
答案:
B
在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。
A:
错误
B:
正确
答案:
A
cin是输出流的一个对象,处理标准输出。
A:
对
B:
错
答案:
B
说明或定义对象时,类名前面不需要加class关键字。
A:
对
B:
错
答案:
A
编程是将所设计的算法转换成计算机能够运行的代码的过程。
A:
对
B:
错
答案:
A
定义模板的关键字是template。
A:
对
B:
错
答案:
A
程序设计过程是指编写程序的过程。
A:
对
B:
错
答案:
B