首页 > 代码库 > more exceptional c++简要笔记
more exceptional c++简要笔记
1、流
尽量提高可读性,避免撰写精简代码
在c++中,有四种方法获得多态行为:虚函数、模板、重载和转换
2、predicates:状态带来的问题
3、可扩充的模板:使用继承还是traits?
4、typename
5、容器、指针和“不是容器的容器”
6、使用vector和deque
7、使用set和map
8、模板特殊化与重载
9、内联
10、内存增长分配策略比较
11、缓式拷贝
12、C++的构造函数模型:
构造函数正常返回,即控件抵达函数体的尾部或者执行了一个return语句。此情况下对象真实存在。
构造函数抛出异常后退出,这种情况下,对象不仅不会继续存在,而且实际上它根本就从未作为一个对象存在过。
13、决不允许异常从析构函数中抛出,写析构函数的时候,就像它已经有了一个throw()异常规范一样。
如果析构函数调用了一个可能会抛出异常的函数,一定要将这个调用包装在try/catch block中,以防止异常逃出析构函数。
14、未管理指针存在的问题
函数的参数:为表达式时可能会交叉求值,为函数时不会发生交叉求值
15、在各自独立的程序语句中执行每一个显式的资源分配,并将分配的资源立即交给管理者对象。
16、异常安全与类的设计:
拷贝赋值:
异常安全的规范形式:基本保证、强烈保证和不抛出异常的保证
继承:
Is-A:符合LSP原则(可替换原则):
如果对于类型s的每一个对象o1,都有类型T的一个对象o2,使得在“用类型t定义的所有程序p”中,o1替换o2后p的行为不变,那么s是t的一个子类型。
所有的公有继承都应该符合LSP原则。
is-a可以用别的方式实现,不局限于公有继承。
is-implemented-in-terms-of:
has-a或private继承来实现
17、所有的基类要么是虚拟公有成员,要么是非虚拟保护成员。
18、了解并使用设计模式
19、嵌套类和局部类
more exceptional c++简要笔记