- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计B.doc
《 面向对象程序设计 》B
一、选择题(每题2分,共20分)
1、在C++语言中函数返回值的类型是由______C___决定的。
A)调用该函数时系统临时
B)return语句中的表达式类型
C)定义该函数时所指定的函数类型
D)调用该函数时的主调函数类型
解析:
返回值的类型是在函数声明时指定。
2、在函数定义前加上关键字inline,表示该函数被定义为____B_____。
A)重载函数
B)内联函数
C)成员函数
D)普通函数
解析:inline关键字用于定义内联函数。内联函数可以优化函数的执行速度,但是该关键字仅仅作为一个编译器提示,实际效果取决于编译器。
3、假定MyClass为一个类,则该类的拷贝初始化构造函数的声明语句为___C______。
A)MyClass (MyClass x);
B)MyClass (MyClass x)
C)MyClass (MyClass x);
B)MyClass (MyClass *x)
解析:
构造函数名包含无效字符, 构造函数参数不能是MyClass x
构造函数参数不能是MyClass
正确的拷贝构造函数定义之一,另一种形式是MyClass(const MyClass );
这只是一个普通的构造函数,不是拷贝构造函数,其参数是只想本类的指针。
4、下面对于友元函数描述正确的是___C______。
A)友元函数的实现必须在类的内部定义
B)友元函数是类的成员函数
C)友元函数破坏了类的封装性和隐藏性
D)友元函数不能访问类的私有成员
解析:
A.友元函数必须在类中声明(加上关键字friend),但是其定义在类中和类外都可以。
B.友元函数不是目标类的成员函数
C.友元可以直接访问类的任何成员,所以破坏封装和隐藏。
D.友元函数可以访问目标类中直接的任何成员
5、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为_____A____。
A)public
B)protected
C)private
D)static
解析:
“对象通过成员操作符访问”是指通过以下形式访问类成员:
objectName.memberName
由public修饰的成员都可以通过以上形式访问,所以答案选A
6、下面对静态数据成员的描述中,正确的是_____A____。
A)静态数据成员是类的所有对象共享的数据
B)类的每个对象都有自己的静态数据成员
C)类的不同对象有不同的静态数据成员值
D)静态数据成员不能通过类的对象调用
解析:
静态数据成员是独立于对象的数据成员,类的所有对象共享同一个静态数据成员。
7、关于new运算符的错误的描述是____A_____。
A)使用运算符new创建对象数组时必须定义初始值
B)使用运算符new创建对象时,会调用类的构造函数
C)运算符new可以用来动态创建对象和对象数组
D)使用new运算符创建的对象可以使用运算符delete删除
解析:
new运算符用于在堆中分配内存,如果是为类对象分配内存的话,new运算符会自动调用类的构造函数。
new建立的对象不会自行销毁,所以如果不使用堆对象,应该用delete运算符删除该对象,否则在对象将一直存在。
int main() {
// 不停分配存储
while (true)
int *p = new int[1024];
}
8. 下列给字符数组进行初始化中,_____A_____是正确的。
A. char s1[ ]=12345abcd; B. char s2[3]=xyz;
C. char s3[][3]={ a, x, y}; D. char s4[2[3]={xyz,mnp};
解析:
比较灵活的定义字符数组的形式,在这种形式中编译器会自动计算字符串”12345abcd”的长度,然后分配适当的内存,最后将字符串拷贝到数组内。
“xyz”的是长度实际上是4个字节,但是s2的最大长度是3个字节,所以数组界限溢出。
有两处错误, 正确定义形式应该是:char s3[3][2] = { a, x, y };
数组界限溢出
C、D都是定义数组的数组。
9、______A____是析构函数的特征。
A. 一个类中只能定义一个析构函数; B. 析构函数与类名不同;
C. 析构函数的定义只能在类体内; D. 析构函数可以有各个或多个参数。;
解析:
一个类中只能有一个析构函数,析构函数的名字格式是 ~类名();并且析构函数不能有参数和返回值。析构函数名字前的~字符时为了区别构造函数。
10、已知:p是一个
文档评论(0)