完成了 Effective C++ 的 55 点

This commit is contained in:
huihut 2019-01-04 22:25:39 +08:00
parent 3556078276
commit da9142687c

View File

@ -1224,6 +1224,12 @@ class doSomething(Flyable *obj) // 做些事情
47. 请使用 traits classes 表现类型信息traits classes 通过 templates 和 “templates 特化” 使得 “类型相关信息” 在编译期可用通过重载技术overloading实现在编译期对类型执行 if...else 测试)
48. 认识 template 元编程模板元编程TMPtemplate metaprogramming可将工作由运行期移往编译期因此得以实现早期错误侦测和更高的执行效率TMP 可被用来生成 “给予政策选择组合”based on combinations of policy choices的客户定制代码也可用来避免生成对某些特殊类型并不适合的代码
49. 了解 new-handler 的行为set\_new\_handler 允许客户指定一个在内存分配无法获得满足时被调用的函数nothrow new 是一个颇具局限的工具因为它只适用于内存分配operator new后继的构造函数调用还是可能抛出异常
50. 了解 new 和 delete 的合理替换时机(为了检测运用错误、收集动态分配内存之使用统计信息、增加分配和归还速度、降低缺省内存管理器带来的空间额外开销、弥补缺省分配器中的非最佳齐位、将相关对象成簇集中、获得非传统的行为)
51. 编写 new 和 delete 时需固守常规operator new 应该内涵一个无穷循环,并在其中尝试分配内存,如果它无法满足内存需求,就应该调用 new-handler它也应该有能力处理 0 bytes 申请class 专属版本则还应该处理 “比正确大小更大的错误申请”operator delete 应该在收到 null 指针时不做任何事class 专属版本则还应该处理 “比正确大小更大的(错误)申请”)
52. 写了 placement new 也要写 placement delete当你写一个 placement operator new请确定也写出了对应的 placement operator delete否则可能会发生隐微而时断时续的内存泄漏当你声明 placement new 和 placement delete请确定不要无意识非故意地遮掩了它们地正常版本
53. 不要轻忽编译器的警告
54. 让自己熟悉包括 TR1 在内的标准程序库TR1C++ Technical Report 1C++11 标准的草稿文件)
55. 让自己熟悉 Boost准标准库
### Google C++ Style Guide