南开17秋学期《面向对象程序设计》在线作业.docx
《南开17秋学期《面向对象程序设计》在线作业.docx》由会员分享,可在线阅读,更多相关《南开17秋学期《面向对象程序设计》在线作业.docx(11页珍藏版)》请在冰豆网上搜索。
南开17秋学期《面向对象程序设计》在线作业
1.?
?
类对象占用内存的大小与()有关。
A.数据成员
B.成员函数
C.数据成员和成员函数
D.私有成员
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
2.?
?
如果类A被说明成类B的友元,则()。
A.类A的成员函数不得访问类B的所有成员
B.类A的成员函数可以访问类B的所有成员
C.类A的成员即类B的成员
D.类B的成员即类A的成员
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
3.?
?
抽象类的作用主要是()。
A.直接用作基类
B.直接用作指针
C.引用的基类型
D.包括以上各项
正确答案:
D?
?
?
?
?
?
满分:
2?
?
分
4.?
?
下面描述中,错误的是()。
A.公有继承时,基类中的public成员在派生类中仍是public的
B.公有继承时,基类中的private成员在派生类中仍是private的
C.公有继承时,基类中的protected成员在派生类中仍是protected的
D.私有继承时,基类中的public成员在派生类中是private的
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
5.?
?
交换两个string类对象所表示的字符串的内容,应该使用string类的()函数。
A.assign
B.insert
C.swap
D.find
正确答案:
C?
?
?
?
?
?
满分:
2?
?
分
6.?
?
下列关于成员函数特征的描述中,错误的是()。
A.成员函数可以重载
B.成员函数一定是内联函数
C.成员函数可以设置参数的默认值
D.成员函数可以是静态的
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
7.?
?
已知“inta=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?
?
?
?
?
?
满分:
2?
?
分
8.?
?
下面叙述中错误的是()。
A.派生类可以使用private派生
B.对基类成员的访问必须是无二义性的
C.基类成员的访问能力在派生类中维持不变
D.赋值兼容规则也适用于多继承的组合
正确答案:
C?
?
?
?
?
?
满分:
2?
?
分
9.?
?
已知函数原型:
voidf(inta,intb=3,charc='*');则下面的函数调用中,不合法的调用是()。
A.f(5)
B.f(5,8)
C.f(6,,'#')
D.f(0,0,'#')
正确答案:
C?
?
?
?
?
?
满分:
2?
?
分
10.?
?
在使用类创建对象时,系统会自动调用该对象的()完成对象中数据成员的初始化等操作。
A.友元函数
B.虚函数
C.构造函数
D.析构函数
正确答案:
C?
?
?
?
?
?
满分:
2?
?
分
11.?
?
在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。
下列叙述中正确的是()。
A.operator+有两个参数,operator*有两个参数
B.operator+有两个参数,operator*有一个参数
C.operator+有一个参数,operator*有两个参数
D.operator+有一个参数,operator*有一个参数
正确答案:
C?
?
?
?
?
?
满分:
2?
?
分
12.?
?
执行语句“stringstr("abc");”时,系统会自动调用string类的构造函数()。
A.string()
B.string(constchar*s)
C.string(conststring&str)
D.string(size_typen,charc)
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
13.?
?
关于纯虚函数和抽象类的描述中,错误的是()。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现。
B.抽象类是指具有纯虚函数的类。
C.一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
D.抽象类作为基类来使用,其纯虚函数的实现由派生类给出。
正确答案:
C?
?
?
?
?
?
满分:
2?
?
分
14.?
?
已知“inta=10;int&r=a;r=r+20;cout<<a;”,则输出为()。
A.10
B.20
C.30
D.不确定值
正确答案:
C?
?
?
?
?
?
满分:
2?
?
分
15.?
?
有关重载函数的描述正确的是()。
A.函数名相同的函数就是重载函数
B.函数名相同但返回值类型不同的函数就是重载函数
C.函数名相同但参数个数或类型不同的函数就是重载函数
D.函数功能相同的函数就是重载函数
正确答案:
C?
?
?
?
?
?
满分:
2?
?
分
16.?
?
在C++中,通过()的机制可以对原有的类进行扩充和完善以适应新的需要。
A.继承
B.封装
C.多态
D.重载
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
17.?
?
下面关于私有继承方式的论述中错误的是()。
A.基类中的私有成员对其对象不可见
B.基类中的私有成员对其派生类不可见
C.基类中的公有成员对其派生类可见
D.基类中的保护成员对其派生类不可见
正确答案:
D?
?
?
?
?
?
满分:
2?
?
分
18.?
?
下列关于运算符重载的描述中,正确的是()。
A.运算符重载可以改变操作数的个数
B.运算符重载可以改变运算符的优先级
C.运算符重载可以改变运算符的结合性
D.运算符重载可以使运算符实现特殊功能
正确答案:
D?
?
?
?
?
?
满分:
2?
?
分
19.?
?
若类中有指针成员变量,则应编写(),使得在对象销毁时能够自动调用该函数释放指针成员变量所指向的内存空间。
A.友元函数
B.虚函数
C.构造函数
D.析构函数
正确答案:
D?
?
?
?
?
?
满分:
2?
?
分
20.?
?
下列关于构造函数说法不正确的是()。
A.构造函数必须与类同名
B.构造函数可以省略不写
C.构造函数必须有返回值
D.在构造函数中可以对类中的成员进行初始化
正确答案:
C?
?
?
?
?
?
满分:
2?
?
分
21.?
?
有关带默认参数的函数的描述正确的是()。
A.只能在函数定义时设置默认参数值
B.只能在函数声明时设置默认参数值
C.函数调用时,必须使用默认的参数值,不能给出新的实参值
D.设置默认参数时,应该设置最右边的若干个参数的默认值
正确答案:
D?
?
?
?
?
?
满分:
2?
?
分
22.?
?
变量的引用,其含义是指该变量的()。
A.值
B.类型
C.别名
D.地址
正确答案:
C?
?
?
?
?
?
满分:
2?
?
分
23.?
?
类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?
?
?
?
?
?
满分:
2?
?
分
24.?
?
派生类中的成员不能访问基类中的()。
A.私有成员
B.公有成员
C.保护成员
D.以上都可以
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
25.?
?
已知“inta=10,*p;int*&r=p;r=&a;*p=20;cout<<a;”,则输出为()。
A.10
B.20
C.不确定值
D.程序有错误
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
26.?
?
多继承的构造函数顺序可分为如下4步:
①所有非虚基类的构造函数按照它们被继承的顺序构造。
②所有虚基类的构造函数按照它们被继承的顺序构造。
③所有子对象的构造函数按照它们声明的顺序构造。
④派生类自己的构造函数体
这四个步骤的正确顺序是()。
A.④③①②
B.②④③①
C.②①③④
D.③④①②
正确答案:
C?
?
?
?
?
?
满分:
2?
?
分
27.?
?
要在类对象上使用运算符,以下不用必须被重载的运算符是()。
A.[]
B.=
C.++
D.--
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
28.?
?
在一个类中,可以对一个操作符进行()重载。
A.1种
B.2种
C.3种
D.多种
正确答案:
D?
?
?
?
?
?
满分:
2?
?
分
29.?
?
运算符重载的目的是()。
A.提高程序的效率
B.提高代码复用能力
C.简化程序,减少目标代码
D.使程序代码直观易读
正确答案:
D?
?
?
?
?
?
满分:
2?
?
分
30.?
?
结构化程序设计方法以()为中心进行分析和设计。
A.结构
B.模块
C.对象
D.类
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
31.?
?
以下为重载函数的一组函数声明的是()。
A.voidprint(int);voidprint(double);
B.voidfun(int);intfun(int);
C.intmax(int,int);intmin(int,int);
D.voidmm();intmm();
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
32.?
?
下列关于继承的描述中,错误的是()。
A.基类中的析构函数不能被派生类继承
B.基类中的保护成员在派生类中无法直接访问
C.派生类的成员除了包括派生类中自己定义的成员外,还包括它从基类继承的成员
D.在公有继承方式下基类中公有成员和保护成员的访问权限到派生类保持不变
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
33.?
?
在一个string类对象表示的字符串中查找子串,应该使用string类的()函数。
A.assign
B.insert
C.swap
D.find
正确答案:
D?
?
?
?
?
?
满分:
2?
?
分
34.?
?
假设堆内存分配均成功,则下面程序段完全正确的是()。
A.int*p=newint(3);cout<<*p;deletep;
B.int*p=newint[5]={1,2,3,4,5};for(inti=0;i<5;i++)cout<<p[i];delete[]p;
C.int*p=newint[5];for(inti=0;i<5;i++,p++){*p=i;cout<<*p;}delete[]p;
D.以上程序段均正确
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
35.?
?
将一个string类对象赋予新值,应该使用string类的()函数。
A.assign
B.insert
C.swap
D.find
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
1.?
?
抽象类虽然也是一种数据类型,但它不能建立对象,只能作为基类被其他类继承。
A.错误
B.正确
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
2.?
?
构造函数不能被派生类继承。
A.错误
B.正确
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
3.?
?
a为MyClass类对象,“staticvoidSetRate(doubler){...}”是MyClass类的静态成员函数,则执行语句“a.SetRate(0.05);”时,SetRate成员函数中的this指针指向对象a的地址。
A.错误
B.正确
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
4.?
?
C++语言类定义中默认的访问权限是public。
A.错误
B.正确
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
5.?
?
在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。
A.错误
B.正确
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
6.?
?
在派生类构造函数的成员初始化列表中,可以包含基类构造函数的调用。
A.错误
B.正确
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
7.?
?
在派生类对象销毁时,系统除了会自动调用派生类的析构函数,还会自动调用基类的析构函数。
A.错误
B.正确
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
8.?
?
在C++中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类派生。
A.错误
B.正确
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
9.?
?
对虚函数的调用,系统都是采用动态联编。
A.错误
B.正确
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
10.?
?
定义一个虚基类后,则该虚基类后继类层次中的类都需要调用虚基类的构造函数对虚基类中定义的成员变量进行初始化。
A.错误
B.正确
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
11.?
?
一个类的静态数据成员被该类的所有对象共享。
A.错误
B.正确
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
12.?
?
在C++中,可以声明虚构造函数和虚析构函数。
A.错误
B.正确
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分
13.?
?
派生类至少有一个基类。
A.错误
B.正确
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
14.?
?
在C++程序中,有且仅能有一个主函数,且其函数名必须是main。
A.错误
B.正确
正确答案:
B?
?
?
?
?
?
满分:
2?
?
分
15.?
?
要使语句“MyClassa;”能够编译通过,必须在定义MyClass类时编写无参构造函数。
A.错误
B.正确
正确答案:
A?
?
?
?
?
?
满分:
2?
?
分