欢迎来到天天文库
浏览记录
ID:60778376
大小:31.00 KB
页数:7页
时间:2020-12-18
《c++面向对象课后答案第11章.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.概念填空题1.1C++程序将可能发生异常的程序块放在try中,紧跟其后可放置若干个对应的catch ,在前面所说的块中或块所调用的函数中应该有对应的throw ,由它在不正常时抛出异常,如与某一条catch类型相匹配,则执行该语句。该语句执行完之后,如未退出程序,则执行catch后续语句。如没有匹配的语句,则交给C++标准库中的termanite 处理。1.2 throw表达式的行为有些像函数的函数调用,而catch子句则有些像函数的函数定义。函数的调用和异常处理的主要区别在于:建立函数调用所需的信息在编译 时已经获得,而异常处理机制要求
2、运行时的支撑。对于函数,编译器知道在哪个调用点上函数被真正调用;而对于异常处理,异常是随机发生的,并沿调用链逆向查找异常处理子句,这与运行时的 多态是 不一样的 。2.简答题2.1 C++中的异常处理机制意义,作用是什么?2.2 当在try块中抛出异常后,程序最后是否回到try块中继续执行后面的语句?2.3 什么叫抛出异常?catch可以获取什么异常参数?是根据异常参数的类型还是根据参数的值处理异常?请编写测试程序验证。2.4 为什么C++要求资源的取得放在构造函数中,而资源的释放在析构函数中?3.选择题3.l下列关于异常的叙述错误的是(A)。
3、 A.编译错属于异常,可以抛出B.运行错属于异常 C.硬件故障也可当异常抛出D.只要是编程者认为是异常的都可当异常抛出3.2下列叙述错误的是( )。 A.throw语句须书写在时语句块中 B.throw语句必须在try语句块中直接运行或通过调用函数运行 C.一个程序中可以有try语句而没有throw语句D.throw语句抛出的异常可以不被捕获3.3关于函数声明floatfun(inta,intb)throw,下列叙述正确的是( )。 A.表明函数抛出float类型异常 B.表明函数抛出任何类型异常 C.表明函数不
4、抛出任何类型异常D.表明函数实际抛出的异常3.4下列叙述错误的是()。 A.catch(…)语句可捕获所有类型的异常 B.一个try语句可以有多个catch语句 C.catch(…)语句可以放在catch语句组的中间D.程序中try语句与catch语句是一个整体,缺一不可3.5下列程序运行结果为(A)。#includeusingnamespacestd;classS{public: ~S(){cout<<”S”<<”t”; }};charfun0(){ Ss1; throw(‘T’); return ‘0’;}
5、voidmain(){try{ cout< usingnamespacestd;inta[10]={1,2,3,4,5,6,7,8,9,10}; intfun(inti); voidmain() {inti,s=0; for(i=0;i<=10;i++) {try {s=s+fun(i);} catch(i
6、nt) {cout<<”数组下标越界!”<=10) throwi; returna[i]; } 数组下标越界! S=554.2#include usingnamespacestd; voidf(); classT {public: T() {cout<<"constructor"<7、 {cout<<"exception”<8、nction5.程序设计题5.1以String类为例,在String类的构造函数中使用new分配内存。如果操作不成功,则用try语句触发一个char类
7、 {cout<<"exception”<8、nction5.程序设计题5.1以String类为例,在String类的构造函数中使用new分配内存。如果操作不成功,则用try语句触发一个char类
8、nction5.程序设计题5.1以String类为例,在String类的构造函数中使用new分配内存。如果操作不成功,则用try语句触发一个char类
此文档下载收益归作者所有