effective C ++ 读书笔记
圆圆木公
踏实做人,认真做事
展开
-
effective c++读书笔记二——构造/析构/赋值运算
4. 条款5:了解C++默默编写并调用哪些函数声明了一个构造函数,编译器将不再为它创建default构造函数。5. 条款6:若不想使用编译器自动生成的函数,就该明确拒绝如果你不希望某个class支持某一特定功能函数,比如不希望某个类具有copy构造函数和copy assigment函数,你不声明,但是编译器会为你默认生成,若你不需要对应的函数,请明确拒绝。l 将对应的函数声明为private,明确告诉编译器阻止生成对应的函数。l 比较常用的方法,采用继承机制,将父类对应的两个原创 2010-10-18 22:18:00 · 402 阅读 · 0 评论 -
effective C++阅读笔记一——让自己习惯C++
1. 条款2,尽量以const,enum,inline替换#defines(1)对于单纯常量,最好以const对象或enums替换#defines:使用常量可能比使用#define导致较小的量的码,因为预处理器“盲目地将宏名称替换为数字”可能导致目标码出现多份数字(2)对于宏形式的函数,改为inline。2. 条款3:尽可能使用const(1)constchar* p = greeting ; //常量指针,指向数据是常量char* constp = greeting ; //指针常量,指针原创 2010-10-18 22:11:00 · 507 阅读 · 0 评论 -
effective C++ 读书笔记四 —— 设计与声明
16 条款18:让接口容易被正确使用,不易被误用。(1)欲开发一个“接口容易被争取使用,不易被误用的接口”,首先必须考虑到客户可能出现什么样的错误。比如设计一个日期的class设计构造函数: classDate{public: Date(intmonth, intday, intyear); ...};//这种做法,不容易防止错误。Date d(30,3,1995);structDay{ explicitDay(intd):val(d){} intval;};struct原创 2010-12-12 17:00:00 · 440 阅读 · 0 评论 -
effective C++读书笔记六 —— 继承与面向对象设计
29 条款32:确定你的public继承塑模出is-a关系 Public继承意味is-a。适用于base classes身上的每一件事情一定也要适用于derived classes身上。因为每一个derived class对象也都是一个base class对象。30 条款33:避免遮掩继承而来的名称 derived classes内的名称会遮掩base classes内的名字。为了让遮掩的名称再见天日,可使用using 声明式或转交函数。 转交函数:在子类声明一个同名函数原创 2010-12-12 17:04:00 · 451 阅读 · 0 评论 -
《effective C++》读书笔记三——资源管理
11. 条款13:以对象管理资源<br />(1)明确什么叫资源?资源一旦用了它,将来必须还给系统。常见的资源有:内存,文件描述器,互斥锁、图形界面中的笔刷和字型,数据连接,以及网络。<br /> <br />(2)当使用new操作符后,就必须使用delete操作符来释放资源,但是单纯依赖函数总是会执行delete语句是行不通的,为确保资源总是被释放,把资源放在对象内,便可依赖C++的析构函数自动调用机制确保资源始终被释放。<br />(3)资源管理对象的两个关键想法:<br />l 获得资源后立刻放进管原创 2010-12-12 16:56:00 · 392 阅读 · 0 评论 -
effective C++读书笔记五 —— 实现
24 条款26:尽可能延后变量定义式的出现时间<br />(1)尽可能延后变量的定义式的出现时间,这样做可增加程序的清晰度并改善程序的效率。<br />(2)<br />Widgetw; <br />for (inti = 0; i < n; ++i) for (inti = 0; i < n; ++i)<br />{ {<br /> w = f(i);原创 2010-12-12 17:02:00 · 351 阅读 · 0 评论 -
effective C++读书笔记七——模板与泛型编程
条款41:了解隐式接口和编译器多态<br /> 面向对象编程世界总是以显式接口(函数签名为中心)和运行期多态(通过virtual函数)来解决问题。而templates则是相反,通过隐式接口和编译期多态。隐式接口奠基于有效表达式。编译器多态,在templates的任何函数调用,造成template的具现化,使这些调用得以成功,这样的具现行为发生在编译期。39. 条款42:了解typename的双重意义<br /> (1)声明templates参数时,前缀关键字class和typenam原创 2010-12-12 17:06:00 · 479 阅读 · 0 评论 -
effective C++读书笔记八 —— 定制new 和delete
条款49:了解 new-handler的行为<br /> (1)设计良好的new-handler函数必须做以下事情:<br />l 让更多内存可被使用。刚开始分配一大块内存,而后当new-handler第一次被调用,将它们释放还给程序使用。<br />l 安装另一个new-handler<br />l 卸除new-handler。将null传给set_new_handler,一旦没有安装任何new_handler, operator new 会在内存分配不成功时抛出异常。<br />l原创 2010-12-12 17:08:00 · 527 阅读 · 0 评论