首页 > 代码库 > 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++简要笔记