上一页 1 2 3 4 5 6 7 ··· 10 下一页
摘要: 严肃对待编译器发出的警告信息。努力在你的编译器的最高(最严苛)警告级别下争取“无任何警告”的荣誉。 不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同。一旦移植到另一个编译器上,你元本年依赖的警告信息有可能消失。 阅读全文
posted @ 2015-04-04 22:21 智者无惧 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 当你写一个placement operator new ,请确定也写出了对应的placement operator delete。如果没有这样做,你的程序可能会发生隐微而时断时续的内存泄漏。 当你声明placement new 和 placement delete,请确定不要(非故意)地遮掩了它们的 阅读全文
posted @ 2015-04-03 21:59 智者无惧 阅读(103) 评论(0) 推荐(0) 编辑
摘要: operator new 应该内含一个无穷循环,并在其中尝试分配内存,如果它无法满足内存需求,就该调用new-handler。它也应该有能力处理0 bytes 申请。Class专属版本则还应该处理“比正确大小更大的(错误)申请”。 operator delete 应该在收到null指针时不做任何事。 阅读全文
posted @ 2015-04-02 22:29 智者无惧 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 有许多理由需要写个自定的new 和delete ,包括改善效能、对heap 运用错误进行调试、收集heap 使用信息。 阅读全文
posted @ 2015-04-02 11:41 智者无惧 阅读(99) 评论(0) 推荐(0) 编辑
摘要: set_new_handler允许客户指定一个函数,在内存分配无法获得满足时被调用。 Nothorw new 是一个颇为局限的工具,因为它只适用于内存分配;后继的构造函数调用还是可能抛出异常。 阅读全文
posted @ 2015-03-31 22:08 智者无惧 阅读(89) 评论(0) 推荐(0) 编辑
摘要: Template metaprogramming(TMP,模板元编程)可将工作由运行期移往编译期,因而得以实现早期错误侦测和更高的执行效率。 TMP可被用来生成“基于政策选择组合”(based on combinations of policy choices)的客户定制代码,也可用来避免生成对某些 阅读全文
posted @ 2015-03-31 11:50 智者无惧 阅读(106) 评论(0) 推荐(0) 编辑
摘要: Traits classes使得“类型相关信息”在编译期可用。它们以template和“templates特化”完成实现。 整合重载技术(overloading)后,traits classes有可能在编译期对类型执行if...else测试。 阅读全文
posted @ 2015-03-30 21:56 智者无惧 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 当我们编写一个class template,而它所提供之“与此template相关的”函数支持“所有参数之隐式类型转换”时,请将那些函数定义为“class template内部的friend函数”。 阅读全文
posted @ 2015-03-30 21:52 智者无惧 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 可在derived class templates内通过“this->“指涉base class templates内的成员名称,或藉由一个明白写出的”base class资格修饰符”完成。 阅读全文
posted @ 2015-03-22 22:34 智者无惧 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 请使用member function templates(成员函数模板)生成”可接受所有兼容类型“的函数。 如果你声明member templates 用于“泛化copy构造”或“泛化assignment操作”,你还是需要声明正常的copy构造函数和copy assignment操作符。 阅读全文
posted @ 2015-03-22 22:31 智者无惧 阅读(105) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 10 下一页