XXX14秋学期《面向对象程序设计》在线作业答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XXX14秋学期《面向对象程序设计》在线
作业答案
面向对象程序设计14秋学期《面向对象程序设计》在线作业
一,单选题
1.下列关于this指针的说法,错误的是()。
A。
this指针指向当前正在操作的对象
B。
this指针只存在于非静态成员函数中
C.在成员函数中对非静态数据成员的访问是通过this指针完成的
D.静态成员函数中可以通过this指针访问非静态成员
正确答案:D
2.已知“int a=10,*p;int *&r=p。
r=*p=20;cout<<a;”,则输出为()。
A。
10
B。
20
C.不确定值
D.程序有错误
正确答案:B
3.有关重载函数的描述正确的是()。
A.函数名相同的函数就是重载函数
B.函数名相同但返回值类型不同的函数就是重载函数
C.函数名相同但参数个数或类型不同的函数就是重载函数
D.函数功用相同的函数就是重载函数
正确答案:C
4.在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。
以下叙述中正确的选项是()。
A。
operator+有两个参数,operator*有两个参数
B。
operator+有两个参数,operator*有一个参数
C。
operator+有一个参数,operator*有两个参数
D。
operator+有一个参数,operator*有一个参数
正确谜底:C
5.以成员函数方式重载运算符“>”,则obj1>obj2被C++编译器解释为()。
A。
operator>(obj1,obj2)
B。
(obj1,obj2)
C。
obj1.operator>(obj2)
D。
obj2.operator>(obj1)
正确谜底:C
6.下列运算符中,()在C++中不能重载。
A。
:
B。
+
C。
-
D。
<=
正确答案:A
7.运行以下程序时,如果由键盘输入6514,则输出结果是()。
#includeusingnamespace std。
int main() { int m。
n。
cout>m。
n。
while(m!=n){ while(m>n) m-=n。
while(n>m) n-=m。
} cout<<m<<endl。
return 0.}A。
3
B。
2
C。
1
D。
0
正确谜底:C
8.变量的引用,其含义是指该变量的()。
A.值
C.别名
D.地址
正确答案:C
9.类对象占用内存的大小与()有关。
A.数据成员
B.成员函数
C.数据成员和成员函数
D.私有成员
正确答案:A
10.单目运算符作为类成员函数重载时()。
A.有形参
B.没无形参
C.有实参
D.以上都不正确
正确答案:B
11.下列关于运算符重载的描述中,正确的是()。
A.运算符重载能够改变操作数的个数
B.运算符重载能够改变运算符的优先级
C.运算符重载可以改变运算符的结合性
D.运算符重载可以使运算符实现特殊功能
正确答案:D
12.假设堆内存分派均成功,则上面程序段完整正确的选项是()。
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.以上程序段均正确
正确谜底:A
13.已知“int a=10,b=8;int &r=a。
r=b;cout<<a<<","<<b<<","<<r;”,则输出为()。
A。
10,8,10 B。
10,8,8
C。
8,8,10
D。
8,8,8
正确答案:D
14.面向对象程序设计方法以()为中心进行分析和设计。
A.结构
B.模块
C.对象
D.类
正确答案:C
15.将一个string类对象赋予新值,应该使用string类的()函数。
A。
assign
B。
insert
C。
swap
D。
find
正确答案:A
16.以下关于赋值运算符重载的说法中正确的选项是()。
A.返回值一般是以引用方式返回的对象,而函数体中总是用语句“return*this;”返回this指针所指向的对象
B.赋值运算符只能以非成员函数的方式重载
C.赋值运算符既能够以成员函数的方式重载,又能够以非成员函数的方式重载
D.以上均不正确
正确谜底:A
17.类的默认的无参构造函数()。
A.在任何情况下都存在
B.仅当未定义无参构造函数时存在
C.仅当未定义有参构造函数时存在
D.仅当未定义任何构造函数时存在
正确答案:D
18.以下关于成员函数特征的描述中,错误的是()。
A.成员函数可以重载
B.成员函数肯定是内联函数
C.成员函数可以设置参数的默认值
D.成员函数可所以静态的
正确答案:B
19.以下为重载函数的一组函数声明的是()。
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();
正确谜底:A
20.执行语句“string str("abc");”时,系统会自动调用string 类的构造函数()。
A。
string()
B。
string(const char *s)
C。
string(const string &str)
D。
string(size_type n。
char c)
正确答案:B
21.静态数据成员初始化在()进行,而且前面不加static,以免与一般静态变量或对象相混淆。
A.类体内
B.类体外
C.构造函数内
D.内联函数内
正确谜底:B
22.类aClass的界说以下:classaClass{;} int *value。
}若要对类中的value赋值,则上面的语句中,正确的选项是()。
A。
aClass my。
my.value=10;
XXX;
XXX;
D。
aClass my(10);
正确谜底:D
23.上面叙述中错误的是()。
A.派生类可以使用private派生
B.对基类成员的访问必须是无二义性的
C.基类成员的访问能力在派生类中维持不变
D.赋值兼容规则也适用于多继承的组合
正确谜底:C
24.在一个string类对象透露表现的字符串中插入新字符,应当使用string类的()函数。
A。
assign
B。
insert
C。
swap
D。
find
正确谜底:B
25.程序在调用重载函数时,根据()区分到底要调用哪个函数。
A.函数名
B.返回值类型
C.参数个数和类型
D.以上都可以
正确答案:C
26.有如下类声明:class Sample { int x。
};则Sample类成员x是Sample类的()。
A.公有数据成员
B.保护数据成员
C.私有数据成员
D.以上选项都不正确
正确答案:C
27.以下关于担当的描述中,错误的是()。
A.基类中的析构函数不能被派生类担当
B.基类中的保护成员在派生类中没法间接拜候
C.派生类的成员除了包括派生类中本人界说的成员外,还包括它从基类担当的成员
D.在私有担当方式下基类中私有成员和保护成员的拜候权限到派生类保持稳定?
正确答案:B
28.有关带默认参数的函数的描述正确的是()。
A.只能在函数界说时设置默许参数值
B.只能在函数声明时设置默认参数值
C.函数调用时,必须使用默认的参数值,不能给出新的实参值
D.设置默许参数时,应当设置最右侧的多少个参数的默许值
正确答案:D
29.交换两个string类对象所表示的字符串的内容,应该使用string类的()函数。
A。
assign
B。
insert
C。
swap
D。
find
正确答案:C
30.下列关于构造函数调用顺序的描述中,正确的是()。
A.创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数
B.创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数
C.建立派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
D.建立基类对象时,先调用派生类的构造函数,后调用基类的构造函数
正确答案:A
31.下面关于构造函数和析构函数的描述,错误的是()。
A.析构函数中调用虚函数采用静态联编
B.对虚析构函数的调用可以采用动态联编
C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数
D.构造函数可以声明为虚函数
正确答案:D
32.运算符重载的目的是()。
A.提高程序的效率
B.提高代码复用能力
C.简化程序,削减目标代码
D.使程序代码直观易读
正确答案:D
33.上面描述中,错误的是()。
A.公有继承时,基类中的public成员在派生类中仍是public的
B.公有继承时,基类中的private成员在派生类中仍是private的
C.公有继承时,基类中的protected成员在派生类中仍是protected的
D.私有继承时,基类中的public成员在派生类中是private 的
正确答案:B
34.一个类的友元函数或友元类能够通过成员操作符访问该类的()。
A.私有成员
B.保护成员
C.公有成员
D.一切成员
正确答案:D
35.下列虚基类的声明中,正确的是()。
A。
class virtual B:public A
B。
virtual class B:public A
C。
class B: public A virtual
D。
class B: virtual public A
正确答案:D
二,判断题
1.派生类至少有一个基类。
A.错误
B.正确
正确答案:B
2.抽象类虽然也是一种数据类型,但它不能建立对象,只能作为基类被其他类继承。
A.错误
B.正确
正确谜底:B
3.要使语句“MyClass a;”能够编译通过,必须在定义MyClass类时编写无参构造函数。
A.错误
B.正确
正确答案:A
4.a为MyClass类对象,“XXX(double r){。
}”是MyClass 类的静态成员函数,则执行语句“a.SetRate(0.05);”时,SetRate 成员函数中的this指针指向对象a的地址。
A.错误
B.正确
正确答案:A
5.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: AB operator+(AB &,AB &);
A.错误
B.正确
正确答案:A
6.构造函数不能被派生类担当。
A.错误
B.正确
正确谜底:B
7.私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。
A.错误
B.正确
正确答案:A
8.抽象类不能定义对象,但可以声明抽象类的指针或引用。
A.错误
B.正确
正确答案:B
A.错误
B.正确
正确答案:B
10.C++语言类界说中默许的拜候权限是public。
A.错误
B.正确
正确答案:A
11.一个类的静态数据成员被该类的所有对象共享。
A.错误
B.正确
正确答案:B
12.在派生类构造函数的成员初始化列表中,能够包含基类构造函数的调用。
A.错误
B.正确
正确谜底:B
13.以友元方式重载运算符时,形参列表中至少有一个参数必须是自定义数据类型。
A.错误
B.正确
正确答案:B
14.在C++中,答应从一个类派生出随便多个类,但不答应某个类同时从多个类派生。
A.错误
B.正确
正确谜底:A
15.界说一个虚基类后,则该虚基类后继类条理中的类都需求调用虚基类的构造函数对虚基类中界说的成员变量举行初始化。
A.错误
B.正确。