随笔分类 - Effective C++
摘要:条款53 : 不要轻忽编译器的警告 请记住: 1. 严肃对待编译器发出的警告信息。努力在你的编译器的最高(最严苛)警告级别下争取“无任何警告”的荣誉。 2. 不要过度倚赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同。一旦移植到另一个编译器上,你原本倚赖的警告信息有可能消失。 条款54 :
阅读全文
摘要:STL容器所使用的heap内存是由容器所拥有的分配器对象管理,不是被new和delete直接管理。本章并不讨论STL分配器。 条款49 : 了解new-handler的行为 当operator new 抛出异常以反映一个未获满足的内存需求之前,它会先调用一个客户指定的错误处理函数,一个所谓的new-
阅读全文
摘要:C++ templates的最初发展动机很直接:让我们得以建立“类型安全”的容器如vector,list和map。然而当愈多人用上templates,他们发现templates有能力完成愈多可能的变化。容器当然很好,但泛型编程——写出的代码和其所处理的对象类型彼此独立——更好。STL算法如for_e
阅读全文
摘要:条款32 : 确定你的public继承塑模出is-a关系 以C++进行面向对象编程,最重要的一个规则是:public inheritance(公开继承)意味“is-a”(是一种)的关系。请务必牢记。当你令class D 以public形式继承class B,你便是告诉C++编译器,每一个类型为D的对
阅读全文
摘要:条款26 : 尽可能延后变量定义式的出现时间 1. 你不只应该延后变量的定义,直到非得使用该变量的前一刻为止,甚至应该尝试延后这份定义直到能够给它初值实参为止。这样,不仅能够避免构造(和析构)非必要对象,还可以避免无意义的default构造行为。 2. 考虑下面两个循环: // 方法A:定义于循环外
阅读全文
摘要:条款18 : 让接口容易被正确使用,不易被误用 欲开发一个“容易被正确使用,不容易被误用”的接口,首先必须考虑客户可能做出什么样的错误操作。 1. 明智而审慎地导入新类型对预防“接口被误用”有神奇疗效。同时也就可以再新类型中对值进行限制。如下: 上述中未加入对值的限制,下面以Month为例说明: 2
阅读全文
摘要:条款13 : 以对象管理资源 假设有如下代码: 假设有如下代码: 假设有如下代码: 上述代码可能出现如下问题导致无法删除pInv指针所指对象,出现资源泄露。 (1)“.....”区域内一个过早结束的return语句; (2)delete动作位于某个循环内,而该循环由于某个continue或goto语
阅读全文
摘要:条款05 : 了解C++默默编写并调用哪些函数 编译器可以暗自为class创建default构造函数、copy构造函数、copy assignment操作符,以及析构函数。 1. default构造函数和析构函数:主要是给编译器一个地方用来放置“藏身幕后”的代码,像是调用base classes和n
阅读全文
摘要:条款01 : 视C++为一个语言联邦 C++ == C(C基本语法) + Object-Oriented C++(类,封装,继承,多态……) + Template C++(泛型编程) + STL(容器,迭代器,算法,函数对象) . 故而: C++高效编程守则视状况而变化,取决于你使用C++的哪一部分
阅读全文

浙公网安备 33010602011771号