08 2015 档案

【more effective c++读书笔记】【第4章】效率(2)
摘要:条款19:了解临时对象的来源1、C++真正的临时对象是不可见的,临时对象通常发生于两种情况:一是当隐式类型转换被施行起来使函数调用能够成功;二是当函数返回对象时。2、只有当对象通过传值方式传递对象或当对象被传递给一个常量引用参数时,才会发生类型转换。如果对象被传递一个非常量引用参数,并不会发生类型转... 阅读全文

posted @ 2015-08-31 10:08 ruan875417 阅读(131) 评论(0) 推荐(0) 编辑

【more effective c++读书笔记】【第4章】效率(1)
摘要:条款16:谨记80-20法则80-20法则说:一个程序80%的资源用于20%的代码身上。80%的执行时间花在大约20%的代码上;80%的内存被大约20%的代码使用;80%的磁盘访问动作由20%的代码执行;80%的维护力气化在了20%的代码上。软件的整体性能几乎总是由其构成要素的一小部分决定。条款17... 阅读全文

posted @ 2015-08-30 15:45 ruan875417 阅读(143) 评论(0) 推荐(0) 编辑

【more effective c++读书笔记】【第3章】异常(2)
摘要:条款12:了解“抛出一个exception”与“传递一个参数”或“调用一个虚函数”之间的差异1、函数参数和exceptions的传递方式有3种:by value,by reference,by pointer。当调用一个函数,控制权最终会回到调用端,但当抛出一个exception,控制权不会再回来抛... 阅读全文

posted @ 2015-08-29 14:14 ruan875417 阅读(182) 评论(0) 推荐(0) 编辑

【more effective c++读书笔记】【第3章】异常(1)
摘要:条款9:利用Destructor避免泄漏资源1、异常无法被忽略:如果一个函数利用“设定状态变量”的方式或是利用“返回错误码”的方式发出一个异常信号,无法保证此函数的调用者会检查那个变量或检验那个错误码。于是程序的执行可能会一直继续下去,远离错误发生地点。但是如果函数以抛出expcetions的方式发... 阅读全文

posted @ 2015-08-28 09:43 ruan875417 阅读(173) 评论(0) 推荐(0) 编辑

【more effective c++读书笔记】【第2章】操作符(2)
摘要:条款7:千万不要重载&&,|| 和, 操作符1、C++对于“真假值表达式”采用“骤死式”评估方式:一旦表达式的真假值确定,即使表达式中还有部分尚未检验,整个评估工作仍告结束。例子:char* p;...if ((p != 0) && (strlen(p) > 10))...不用担心调用strlen时... 阅读全文

posted @ 2015-08-27 14:38 ruan875417 阅读(166) 评论(0) 推荐(0) 编辑

【more effective c++读书笔记】【第2章】操作符(1)
摘要:条款5:对定制的“类型转换函数”保持警觉1、两种函数允许编译器执行隐式转换:单自变量constructor 和隐式类型转换操作符。单自变量constructor是指能够以单一自变量成功调用的constructor,这样的constructor可能声明拥有单一参数,也可能拥有多个参数,并且除了第一参数... 阅读全文

posted @ 2015-08-26 09:44 ruan875417 阅读(128) 评论(0) 推荐(0) 编辑

【more effective c++读书笔记】【第1章】基础议题(2)
摘要:条款3:绝对不要以多态方式处理数组1、继承的最重要性质之一就是,你可以通过指向基类的指针或者引用来操作派生类对象。但是如果你通过基类指针或者引用来操作派生类所形成的数组,它几乎绝不会按你预期般地运作。例子:#includeusing namespace std;class Base{public: ... 阅读全文

posted @ 2015-08-25 14:38 ruan875417 阅读(159) 评论(0) 推荐(0) 编辑

【more effective c++读书笔记】【第1章】基础议题(1)
摘要:条款1:仔细区别pointers和references1、pointers和references之间的区别是:a、没有所谓的null reference,一个reference必须总代表某个对象。pointer可以不指向任何对象。b、pointer可以被重新赋值,指向另一个对象,reference却... 阅读全文

posted @ 2015-08-24 13:41 ruan875417 阅读(143) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第9章】杂项讨论
摘要:条款53:不要轻忽编译器的警告警告信息天生和编译器相依,不同的编译器有不同的警告标准。所以草率编程后依赖编译器为你指出错误,并不可取。请记住:严肃对待编译器发出的警告信息。努力在你i的编译器的最高(最严苛)警告级别下争取“无任何警告”的荣誉。不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态... 阅读全文

posted @ 2015-08-20 13:51 ruan875417 阅读(137) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第8章】定制new和delete(2)
摘要:条款50:了解new和delete的合理替换时机有人会想要替换掉编译器提供的operator new或operator delete,以下是几个理由:a、用来检测运用上的错误。编程过程中会出现各种错误。这些错误导致内存泄露(memory leaks)、不确定行为产生、overruns(写入点在分配区... 阅读全文

posted @ 2015-08-19 09:57 ruan875417 阅读(183) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第8章】定制new和delete(1)
摘要:条款49:了解new-handler的行为1、当operator new无法满足某一内存分配需求时,它会抛出异常,以前会返回null指针。当operator new抛出异常以反映一个未获满足的内存需求之前,它会先调用一个客户指定的错误处理函数,一个所谓的new-handler。为了指定这个“用以处理... 阅读全文

posted @ 2015-08-18 15:01 ruan875417 阅读(150) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第7章】模板和泛型编程(3)
摘要:条款46:需要类型转换时请为模板定义非成员函数对条款24的例子进行模板化:#includeusing namespace std;templateclass Rational{public: Rational(const T& n = 0, const T& d = 1) :numerator(n)... 阅读全文

posted @ 2015-08-17 13:24 ruan875417 阅读(141) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第7章】模板和泛型编程(2)
摘要:条款44:将与参数无关的代码抽离templatestemplate是节省时间和避免重复代码的一个奇妙方法。class template的成员函数只有在被使用时才被暗中具现化。但是如果不小心,使用templates可能导致代码膨胀(code bloat):其二进制代码带着重复(或几乎重复)的代码、数据... 阅读全文

posted @ 2015-08-16 13:34 ruan875417 阅读(193) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第7章】模板和泛型编程(1)
摘要:条款41:了解隐式接口和编译期多态1、模板的编译期多态例子:#includeusing namespace std;class ClassA{public: ClassA(size_t s) :size(s){} size_t getSize() const{ return size; }priva... 阅读全文

posted @ 2015-08-15 20:36 ruan875417 阅读(164) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第6章】继承与面向对象设计(4)
摘要:条款39:明智而审慎的使用private继承1、如果classes之间的继承关系是private,编译器不会自动将一个derived class对象转换为一个base class对象。例子:#include#includeusing namespace std;class Person{protec... 阅读全文

posted @ 2015-08-14 14:07 ruan875417 阅读(147) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第6章】继承与面向对象设计(3)
摘要:条款36:绝不重新定义继承而来的non-virtual函数1、例子#includeusing namespace std;class Base{public: void mf(){ cout mf(); Derived* pd = &d; pd->mf(); system("pause"); ret... 阅读全文

posted @ 2015-08-13 14:20 ruan875417 阅读(152) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第6章】继承与面向对象设计(2)
摘要:条款35:考虑virtual函数以外的其他选择假设你在开发一款游戏,你打算为游戏内的人物设计一个继承体系。每个人物都有自己的健康状态。你能马上想到下面这个设计:class GameCharacter{public: virtual int healthValue()const;};有没有其他替代方案... 阅读全文

posted @ 2015-08-12 16:24 ruan875417 阅读(175) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第6章】继承与面向对象设计(1)
摘要:条款32:确定你的public继承塑模出is-a关系1、以C++进行面向对象编程,最重要一个规则是:public inheritance(公开继承)意味着“is-a”(是一种)的关系。如果令class D(“Derived”)以public形式继承class B(“Base”),便告诉C++编译器(... 阅读全文

posted @ 2015-08-11 15:18 ruan875417 阅读(136) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第5章】实现(2)
摘要:条款29:为“异常安全”而努力是值得的1、在异常抛出时,带有异常安全性的函数会:a、不泄露任何资源b、不允许数据败坏2、异常安全函数(Exception-safefunctions)提供以下三个保证之一:a、基本承诺:如果异常被抛出,程序内的任何事物仍然保持在有效状态下。没有任何对象或数据结构会因此... 阅读全文

posted @ 2015-08-05 16:16 ruan875417 阅读(157) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第5章】实现(1)
摘要:条款26:尽可能延后变量定义式的出现时间1、只要你定义了一个变量而其类型带有一个构造函数或析构函数,那么当程序的控制流到达这个变量定义式时,你便得承受构造成本;当这个变量离开其作用域时,你便得承受析构成本。即使这个变量最终并为被使用,仍需耗费这些成本,所以应该尽量避免这种情形。例子:std::str... 阅读全文

posted @ 2015-08-04 20:35 ruan875417 阅读(156) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第4章】设计与声明(2)
摘要:条款22:将成员变量声明为private1、如果成员变量不是public,客户唯一能够访问对象的办法就是通过成员函数。如果public接口内的每样东西都是函数,客户就不需要再打算访问class成员时迷惑地试着记住是否该使用小括号。2、使用函数可以让你对成员变量的处理有更精确的控制。如果你令成员变量为... 阅读全文

posted @ 2015-08-03 19:41 ruan875417 阅读(152) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第4章】设计与声明(1)
摘要:条款18:让接口容易被正确使用,不容易被误用1、许多客户端错误可以因为导入新类型而获得预防。在防范“不值得拥有的代码”上,类型系统是你的主要同盟国。2、预防客户错误的另一个办法是,限制类型内什么事可做,什么事不能做。常见的限制是加上const。3、除非有好理由,否则应该尽量令你的types的行为与内... 阅读全文

posted @ 2015-08-02 21:55 ruan875417 阅读(194) 评论(0) 推荐(0) 编辑

【effective c++读书笔记】【第3章】资源管理
摘要:条款13:以对象管理资源1、例子:#includeusing namespace std;class Test{public: Test(){ cout #includeusing namespace std;class Test{public: Test(){ cout pTest(create... 阅读全文

posted @ 2015-08-01 15:53 ruan875417 阅读(138) 评论(0) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示