6、如果异常没有被catch块捕获,就调用terminate()函数,该函数会接着调用abort()。 7、标准库定义了一组标准异常。
8、异常说明限制了函数可以抛出的异常类型。 9、如果函数抛出的异常类型不在该函数的异常说明的允许范围之内,就会调用unexcepted()函数。
10、可以改变unexcepted()函数的默认操作,方法是实现自己的excepted()处理程序,把该函数指针传递给set_ unexcepted()函数,以建立该处理程序。 11、构造函数的函数try块可以包含初始化列表和构造函数体。
12、Uncaught_ exceptioned()函数允许检测因抛出异常而调用的析构函数。 练习
1、从标准exception类中派生自己的异常类CurveBall,表示一个随机错误,再编写一个函数,在时间过了大约25%时抛出这个异常(一种方式是生成一个1到20之间的随机数,如果该数小于或等于5,就抛出异常)。定义函数main(),调用这个函数1000次,记录并显示异常抛出的次数。
2、定义另一个异常类TooManyExceptions,在第1题中,当捕获的异常超过10次时,就从CurveBall异常的catch块中抛出这个类型的异常。 3、在第一题的代码中实现自己的中断处理程序,在抛出TooManyExceptions异常时显示一个消息。
4、在稀疏数组中,大多数元素的值都是0或空。给类型为string指针的一维稀疏数组元素定义一个类,仅存储数组中的非0元素。元素的个数应指定为构造函数参数,因此至多可以存储100个对象的稀疏数组声明如下:
SparseArray words(100);
为类实现下标运算符,以使用数组表示法提取或存储元素。如果在下标运算符函数中超出了合法的索引范围,就抛出了异常(提示:在内部使用链表,让每个节点存储一个元素及其下标)。
第十八章 类模版************************* 本章小结:
1、类模板定义了一系列类类型。
2、类模板的实例是根据给定的模版参数集,从该模版中生成的类定义。 3、声明类模板类型的对象,就会对类模板进行隐式实例化。
4、类模版的显式实例化,会根据类模版的给定参数集定义一个类。
5、对于类模版中类型参数的参数,其类型可以是基本类型、类类型、指针或引用类型。 6、非类型参数可以是整型类型、枚举类型、指针或引用。
7、类模板的部分说明可以根据原类模板中参数的一组限定子集,定义一个新模板。 8、类模板的完全说明可以根据原类模板的所有参数参数,定义一个新模板。
9、类模板的友元可以是函数、类、函数模板或类模板。 10、普通的类可以把类模板或函数模板声明为友元。 练习
1、第17章的练习题要求创建一个稀疏数组类。这里则要求定义一个一维稀疏数组的模板,存储任意类型的对象,而且只有存储在数组中的元素才能占用内存。元素的个数可以由模板的一个实例存储,该个数是不应有限制的。该模板可以用于定义一个稀疏数组,该数组包含double类型的元素指针,语句如下:
SparseArray
为模板定义下标运算符,以便象普通的数字那样提取和设置元素值。如果在某个索引位置不存在元素,下标运算符就应该返回由对象类的默认构造函数创建的对象。在main()函数中使用这个模版,在一个稀疏数组的随机位置上存储20个int类型的随机元素值,随机数的范围是32到212,索引值的范围是0到499,输出非0元素值及其索引位置。
2、为链表定义一个模板,允许从链表的最后开始向前遍历链表,再从列表的开始向后遍历列表(每个节点都需要前一个节点的指针和下一个节点的指针)。在一个程序中使用该模板,把每个散文或诗歌中的单词存储为字符串对象,再以逆序方式显示他们,一行显示5个单词。
3、使用链表和稀疏数组模板创建一个程序,在至多有26个链表的稀疏数组中,存储散文或诗歌中的单词,每个列表都包含首字母的相同单词。输出这些单词,在输出时,对这些单词分组,使每一组单词具有相同的首字母,并在一个新行上显示该组中的单词(在指定模板参数时,应在连续的>字符之间加上空格,否则>>会被解释为按位右移运算符)。
4、在SparseArray模板中添加insert()函数,该函数在数组的最后一个元素后面添加一个元素。使用这个函数和一个SparseArray实例完成上一题,其中,该实例的元素是存储了string对象的SparseArray对象。
第十九章 输入输出操作************************* 本章小结:
1、标准库支持字符流、二进制(字节)流和字符串流的输入输出操作。 2、输入和输出的标准是cin和cout,还有错误流cerr和clog。 3、提取和插入运算符提供了格式化的流输入输出操作。
4、文件流可以与磁盘上的文件关联起来,进行输入、输出或输入输出。 5、文件大开模式决定了是从流中读取数据,还是给流写入数据。
6、如果创建了一个文件输出流,并把它与未有文件本身使用的文件名关联起来,就会创建该文件。
7、文件有开头、结尾和当前位置。
8、可以把文件流的当前位置改为以前记录的某个位置。这位置与流开头的偏移量为正, 9、结尾的偏移量为负,而与流当前位置的偏移量可以为正,也可以为负。
10、为了支持类对象的流操作,可以重载插入和提取运算符,使这些运算符函数成为类的友
元。
11、字符串流类提供了string对象的输入输出操作。 练习
1、编写一个Time类,把小时、分钟和秒存储为整数。提供一个重载的插入运算符(<<),把时间以hh::mm::ss的格式输出到任意输出流上。 2、给time类提供一个简单的提取运算符(operator>>()),它可以以hh::mm::ss格式读取时间值。如何复制“:”符号?(提示:用什么类型的变量存储“:”?)
3、编写一个程序,把时间记录到文件中。编写一个匹配程序,读取文件中的时间值,把他们显示到屏幕上。
4、编写一个程序,从标准输入中读取文本行,再把他们写到标准输出上,删除所有的前导空白,把多个空格转换为一个空格。对键盘输入测试该程序,再对从文件中读取的字符测试该程序。编写第二个程序,把小写字母转换为大写形式,在测试他们。
第二十章 标准模板库************************* 本章小结:
1、STL通过三类模板提供了功能:容器、迭代器和算法。 2、容器提供了存储和组织任意类型的对象的各种方式,但要存储的对象类型必须满足元素的基本要求。
3、迭代器是操作方式像指针的对象。迭代器是智能指针的示例。 4、迭代器可以访问容器中的对象,或从流中提取对象。
5、迭代器成对使用时,可以在序列的半开间隔中定义一组对象。第一个对象包含在间隔中,而最后一个对象不包含在间隔中。
6、算法是一般化的标准函数,可以处理迭代器指定的对象集。 7、算法独立于容器,但可以通过迭代器应用于任何容器中的对象。 练习
1、编写一个程序,使用Vector存储任意个城市,这些城市借助键盘读取为string对象,再输出他们。
2、在上一题中添加代码,使用sort()算法按照升序对出城市排序,之后输出他们。
3、编写一个程序,借助键盘读取任意个名称和关联的电话号码(其格式是”Laurel , Stan”
5431234),把他们存储在map容器中,给定一个名称,就可以提取电话号码。在输入一系列名称和电话号码后,对map进行随机访问,提取一个随即电话号码。
4、利用上一题的代码,使用一个迭代器列出map的内容。
5、给上一题添加代码,用multimap替换map容器,为给定的名称列出所有的电话号码,作为查询的相应。
发表于 @ 2007年10月10日 11:29:00 | 评论( 3 ) | 编辑| 举报| 收藏
旧一篇:Microsoft Visual Studio .NET 2003安装过程图解 | 新一篇:设计模式和极限编程 查看最新精华文章 请访问博客首页相关文章 Source code of CIH[转载]C语言程序设计入门学习六步曲比较C#中的readonly与constJava入门实例classpath及package详解(转帖)教程 -- 编写 Javascript 代码C语言的保留关键字typedef 和 define#define与const的区别
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lihuaidong521/archive/2007/10/10/1818095.aspx
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新高中教育c 入门经典习题集 (4)全文阅读和word下载服务。
相关推荐: