更深入C++还有什么?
本书的目的是介绍C++语言的核心元素.这些核心元素都是我们日常使用C++编程时所需要的特性和技术。就目前介绍的知识来讲,我们已经能够编写真实的、专业的程序了。然而,C++语言是一个非常丰富的语言。它含有很多高级的特性,我们仍然需要掌握。这其中包括:
l 标准模板库(STL)
l 显示构造函数
l 转换函数
l 类的const成员函数和mutable关键字。
l asm关键字
l 重载数组索引运算符[],重载函数调用运算符(),重载动态分配和释放运算符new和delete
在上述内容中,或许最重要的就是标准模板库了。STL是一个模板类的库。它提供了现成的、可用于解决常用的数据存储问题的方案。例如,标准模板库中定义了通用的数据结构,如队列,栈,列表等,我们可以在程序中直接使用。
我们也许还需要学习一下C++函数库。其中含有大量能简化我们程序的函数。
我建议大学阅读我的《C++:The Complete Reference》(《C++完全手册》)来进一步学习C++语言。该书由Osborne/McGraw-Hill, Berkeley,Colifornia出版社出版。这本书除了涵盖了本书的全部内容外,还有更多别的东西。现在我们已经有充足的知识来阅读这本更加深入介绍C++的书了。
第12章练习题
1. 说明try,catch和throw是如何协调工作来支持异常处理的?
2. 当需要同时捕获基类和派生类的异常时我们应该如何组织catch子句列表?
3. 写出如何声明一个返回值为void类型的函数func(),该函数抛出MyExcpt类的异常。
4. 为项目12-1中的通用队列定义一个异常:在队列上溢和下溢的时候抛出该异常。并写出如何使用这个异常。
5. 什么是通用函数?使用什么关键字来创建通用函数?
6. 为项目5-1创建通用的quicksort()和qs()函数。并演示如何使用之。
7. 使用下面定义的Sample类,并使用项目12-1中的通用队列来创建一个含有三个Sample类对象的队列。
class Sample
{
int id;
public:
Sample()
{
id = 0;
}
Sample(intx)
{
id =x;
}
void show()
{
cout<<id<<endl;
}
}
8. 重写针对问题7的答案,用动态分配的方式生成其中的三个Sample类的对象。
9. 写出如何声明一个名称为RobotMotion的命名空间。
10. 哪个命名空间中囊括了C++标准库?
11. 类的静态成员函数是否可以访问类的非静态数据?
12. 哪个运算符可以在运行时得到一个对象的类型?
13. 使用哪个运算符可以在运行时检测类型转换的有效性?
14. const_cast是用来做什么用的?
15. 自己针对项目12-1进行重写:队列类放入到QueueCode命名空间中,并放入到自己的文件Queue.cpp中,然后修改main()函数,使用using语句来引入QueueCode命名空间。
16. 请继续学习C++。它是当前世界上最强大的计算机语言。掌握了它,我们就成为了众多编程者中的中坚分子。