2012年5月9日

Code Complete读书笔记05

摘要: 2012-05-07Chapter181、表驱动法→从表里面查找信息而不使用if,case等语句 如,一个月有多少天,可维护数组days[12]={31,28,31,30……31} 则,day=days[month-1]; 省去判断if(month==1)…… 优点:可读性好;易于修改2、已知a,b与min(),max(),保证数x介于a,b之间(a<b) max( min(b,x) , a )3、索引访问表:有时候不能把数据直接作为键值假设商店有100种商品,编号范围从0000-9999,存储单价,库存等信息,一条记录100字节法一:直接建立主表,建立一个Info[10000],共用1 阅读全文

posted @ 2012-05-09 17:33 TheBest 阅读(111) 评论(0) 推荐(0) 编辑

2012年5月8日

Code Complete读书笔记04

摘要: 2012-05-05Chapter161、预先不知道循环要迭代多少次——建议使用while循环 需要一个执行次数固定的循环——建议使用for循环2、对于for,在循环结束后不要滥用下表的最终取值 例如,for(i=0;i<length;i++) {……} process(i); //此处滥用了i 正解:在循环体内某个适当地方将最终取值赋给某个变量带出3、对于while,i++之类的表达式目的不是完成循环工作,而是控制循环;此类语句放在循环开始或末尾4、一个循环只做一件事5、在循环(尤其是多维数组)时,用有意义的名字来避免I,j,k等命名6、把循环下标变量的作用域限制在循环内 对于for( 阅读全文

posted @ 2012-05-08 18:27 TheBest 阅读(158) 评论(0) 推荐(0) 编辑

2012年5月4日

Code Complete读书笔记03

摘要: 2012-05-03Chapter131、把指针操作限制在子程序或类里面 例:对于一个链表,通过NextLink(),InsertLink(),DeleteLink()等子程序操作指针,即集中控制数据2、按正确的顺序删除指针(释放当前指针之前,确保已经有指向下一个元素的指针)3、删除或释放指针后将其设为空值(避免迷途指针)4、向子程序传递对象时→按引用传递而非按值(避免复制该对象,提高效率) 当希望按值传递时(比如,不想误修改传入对象)→按const引用5、只有万不得已时才使用全局数据 考虑以下替换方案 1)先把变量设为局部的,仅当需要时才设为全局的 2)区分全局变量和类变量→模块化 3)使用 阅读全文

posted @ 2012-05-04 15:03 TheBest 阅读(159) 评论(0) 推荐(0) 编辑

2012年5月2日

Code Complete读书笔记02

摘要: Chapter123、对浮点数不可直接比较大小,而应用两者之差<某个特定值的方式 例:double sum=0.0,test=1.0 for(i=0;i<10;i++) sum+=0.1; if(sum==test)//很有可能不相等,sum最终值为0.999999997 ∴自定义函数equals bool Equals(double s1,double s2){ if(fabs(s1,s2)<0.000001) return true; return false;}则可直接比较4、避免使用神秘字符与神秘字符串,用具名常量来加以取代5、C语言字符串 将长度声明为constan 阅读全文

posted @ 2012-05-02 22:58 TheBest 阅读(174) 评论(0) 推荐(0) 编辑

Code Complete读书笔记01

摘要: Chapter101、变量初始化原则 在声明的时候初始化,在靠近第一次使用变量的位置声明和定义该变量2、减少变量的跨度(两次或多次使用的间隔)与生存时间(从声明到释放) ∴尽可能少用全局变量3、每个变量只用于单一用途,把使用相同变量的语句尽可能集中在一起Chapter111、变量名要有意义,通常表达的是what而不是how,且长度介于8-12之间(10-16尤佳) 较长的名字适用于很少用到的变量或者全局变量 较短的名字适用于局部变量或循环变量2、变量名中限定词(如Total,Sum,Max,Index,Arrange)建议加至名字最后 如 revenueTotal 总收入 MaxPoints建 阅读全文

posted @ 2012-05-02 22:52 TheBest 阅读(139) 评论(0) 推荐(0) 编辑

2012年4月12日

Essential C++读书笔记

摘要: 2012-03-311、switch可以这样用 switch(next_char) { case ‘a’: case ’A’: case ’e’: case ’E’: …… case ‘u’: case ‘U’: cout<<”这个字母是元音”<<endl; break; }2、vector初始化方法 1,vector1<int> v(10); v[0]=1…… 2,假设已经有一个长度为10的数组a(已经初始化) 则可vector<int>v(a,a+10);即,以实际内存位置初始化3、默认的文件操作为输出模式 例:ofstream fout(“ 阅读全文

posted @ 2012-04-12 19:25 TheBest 阅读(134) 评论(0) 推荐(0) 编辑

Effective C++读书笔记05

摘要: 2012-03-301、使用非局部静态对象时要确定它已经有初值 包括1,定义于全局或命名空间中,2,在某个类内声明为static,3,某个文件范围内定义为static 对于使用一个对象,应确保其获得初值,而constructor确保这一点,但不同编译单元中,非局部静态对象的初始化次序无法左右 解决办法:单例设计模式 将每个非局部静态对象放到一个他专属的函数中,声明为static,令函数传回一个引用 用户不直接使用非局部静态变量,而是使用函数(以函数内的static object 取代非局部静态变量) 此时,此函数调用时第一次遇到此对象定义时一定会初始化,传回引用加固了这一点(引用一定指向一个已 阅读全文

posted @ 2012-04-12 19:24 TheBest 阅读(136) 评论(0) 推荐(0) 编辑

2012年4月6日

C++ Primer Plus读书笔记08

摘要: 2012-03-091、友元类 类(遥控器,Remote)的所有方法可以访问类(TV)的私有,保护成员class TV{ friend class Remote;}class Remote{……}//实现2、友元成员函数 稍复杂,见P5433、类包含:将类对象作为另一个类的成员 如class Student{string name;}; //包含string 类成员name 类嵌套:不创建类成员,只定义类型4、异常abort()函数 用cstdlib头文件 作用:向标准错误流cerr发送abnormal program termination double func(int x,int y){ 阅读全文

posted @ 2012-04-06 17:42 TheBest 阅读(313) 评论(0) 推荐(0) 编辑

C++ Primer Plus读书笔记07

摘要: 2012-03-051、在类声明中声明的结构、类或枚举,作用域为整个类。此时不创建对象;若为private 权限,只能在类中使用被声明的类型;若public,则可在类外面使用被声明的类型2、派生类的构造函数 (1)先创建基类对象→通过成员初始化列表将基类信息传给基类构造函数 (2)若不使用初始化列表,系统将调用基类的默认构造函数 (1)derived::derived(int x,int y):base(x,y) {……} (2)derived::derived(int x,int y) {……}//此法调用基类的默认构造函数 析构的顺序相反,先析构派生类,再析构基类3、基类指针可以指向派生类 阅读全文

posted @ 2012-04-06 17:42 TheBest 阅读(143) 评论(0) 推荐(0) 编辑

C++ Primer Plus读书笔记05

摘要: 2012-03-011、默认参数 int test(int n,int m=4,int j=5) //从右向左添加默认值,不可跳过2、函数重载==函数多态 定义一组名称相同的函数 (1)避免歧义 (2)int test(int n)与int test(int &n)不可共存 (3)void test(const char *bit)可接受const或非const变量 (4)特征标重载(即参数列表重载),而非函数类型重载int test(int a,int b)long test(int a,int b)//错误int test(int a,int b)int test(long a,i 阅读全文

posted @ 2012-04-06 17:39 TheBest 阅读(145) 评论(0) 推荐(0) 编辑

导航