09 2015 档案
摘要:1. 仿真MFC目的:以MFC为例,学习application framework的内部运行。MFC六大关键技术: (1)MFC程序的初始化过程 (2)RTTI(Runtime Type Information)运行时类型识别 (3)Dynamic Creation 动态创建 (4)Persiste
阅读全文
摘要:1. Windows程序分为“程序代码”和“UI资源”,下图所示:2. Windows支持动态链接(应用程序所调用的Windows API函数是在“执行时期”才链接上的)。Windows程序调用的函数可分为如下两部分: (1)C Runtimes:LIBC.LIB(C Runtime 函数库的静态...
阅读全文
摘要:条款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:定义于循环外
阅读全文
摘要:Partial Template Specialization能够让你在模板(Template)的所有可能的实体中特化出一组子集. 1.模板(全)特化(template specialization): 例如,定义如下的一个模板: 然后你可以像下面那样明确地加以特化: 其中ModalDialog和M
阅读全文
摘要:条款18 : 让接口容易被正确使用,不易被误用 欲开发一个“容易被正确使用,不容易被误用”的接口,首先必须考虑客户可能做出什么样的错误操作。 1. 明智而审慎地导入新类型对预防“接口被误用”有神奇疗效。同时也就可以再新类型中对值进行限制。如下: 上述中未加入对值的限制,下面以Month为例说明: 2
阅读全文
摘要:条款13 : 以对象管理资源 假设有如下代码: 假设有如下代码: 假设有如下代码: 上述代码可能出现如下问题导致无法删除pInv指针所指对象,出现资源泄露。 (1)“.....”区域内一个过早结束的return语句; (2)delete动作位于某个循环内,而该循环由于某个continue或goto语
阅读全文
摘要:C++类中谈到static,我们可以在类中定义static成员,static成员函数!C++primer里面讲过:static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联!这句话可能比较拗口,其实可以这...
阅读全文
摘要:条款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号