从学C++到现在也有十个年头了,一直在用,也一直在不断的研究和学习。最近时间比较宽松,就把之前的一些书籍翻了出来,把基础的东西都又略读了一遍,有了不少的收获。这可能就是所谓的理论和实践的不断循环吧。将略读过程中所做的笔记整理出来,主要是总结和备忘,如果能对他人有所帮助,那就善莫大焉了。注:都是一些基础的东西,没有什么高深的,大牛可以跳过。
一、模板和泛型
1、模板是C++语言与众不同的特性,是标准库的基础。
2、函数模板是建立算法库的基础,类模板是建立标准库容器和迭代器类型的基础。
3、模板是泛型编程的基础。
二、异常处理
1、C++的异常处理中,需要由问题检测部分抛出一个对象给处理代码,通过这个对象的类型和内容,两个部分能够就出现了什么错误进行通信。
2、异常对象由编译器管理,而且保证驻留在可能被激活的任意catch都可以访问的空间。
3、当抛出一个表达式的时候,被抛出对象的静态编译时类型将决定异常对象的类型。
4、栈展开(stack unwinding),沿嵌套函数调用链继续向上,直至为异常找到一个catch子句,就进入该catch子句,并在该处理代码中继续执行。当catch结束的时候,在紧接与该try块相关的最后一个catch子句之后的点继续执行。
5、析构函数应该从不抛出异常。
三、RAZZ
1、通过定义一个类来封装资源的分配和释放,可以保证正确释放资源。这一技术通常称为“资源分配即初始化”,简称RAII。
2、autoptr类是RAII的实例。
四、析构函数
1、合成析构函数按对象创建时的逆序撤销每个非static成员,因此,它按成员在类中声明次序的逆序撤销成员。
2、析构函数与复制构造函数或者赋值操作符之间的一个重要区别是,即使我们编写了自己的析构函数,合成析构函数仍然运行。