摘要:
严肃对待编译器发出的警告信息。努力在你的编译器的最高(最严苛)警告级别下争取“无任何警告”的荣誉。 不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同。一旦移植到另一个编译器上,你元本年依赖的警告信息有可能消失。 阅读全文
摘要:
当你写一个placement operator new ,请确定也写出了对应的placement operator delete。如果没有这样做,你的程序可能会发生隐微而时断时续的内存泄漏。 当你声明placement new 和 placement delete,请确定不要(非故意)地遮掩了它们的 阅读全文
摘要:
operator new 应该内含一个无穷循环,并在其中尝试分配内存,如果它无法满足内存需求,就该调用new-handler。它也应该有能力处理0 bytes 申请。Class专属版本则还应该处理“比正确大小更大的(错误)申请”。 operator delete 应该在收到null指针时不做任何事。 阅读全文
摘要:
有许多理由需要写个自定的new 和delete ,包括改善效能、对heap 运用错误进行调试、收集heap 使用信息。 阅读全文
摘要:
set_new_handler允许客户指定一个函数,在内存分配无法获得满足时被调用。 Nothorw new 是一个颇为局限的工具,因为它只适用于内存分配;后继的构造函数调用还是可能抛出异常。 阅读全文
摘要:
Template metaprogramming(TMP,模板元编程)可将工作由运行期移往编译期,因而得以实现早期错误侦测和更高的执行效率。 TMP可被用来生成“基于政策选择组合”(based on combinations of policy choices)的客户定制代码,也可用来避免生成对某些 阅读全文
摘要:
Traits classes使得“类型相关信息”在编译期可用。它们以template和“templates特化”完成实现。 整合重载技术(overloading)后,traits classes有可能在编译期对类型执行if...else测试。 阅读全文
摘要:
当我们编写一个class template,而它所提供之“与此template相关的”函数支持“所有参数之隐式类型转换”时,请将那些函数定义为“class template内部的friend函数”。 阅读全文