高质量c/c++编程读书笔记(1)

1.  为防止头文件被重复利用(通常发生在#include的嵌套中),应用#ifndef/#define/#endif产生预处理块。比如要防止graphics.h的头文件被重复利用,定义#ifndef GRAPHICS_H。(为什么用大写?)。

2.  好的命名规则:静态变量加前缀s_,全局变量加前缀g_,类的数据成员加前缀m_

3.  不可将bool变量直接与TRUE,FALSE或者10进行比较。区别于整型变量与零值比较。不可将浮点变量用“==”或“!=”与数字比较,应设法转化成“>=”或“<=”形式。应当将指针变量用“==”或“!=”与NULL比较,指针变量的零值为“空”(记为NULL)。尽管NULL的值与0相同,但两者的意义不同。(参考高质量C++编程指南4.3节)。

4.  在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的放在最外层,以减少CPU跨切循环层的次数。

5.  如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。

6.  C语言用#define来定义常量(称为宏常量)。C++语言除了#define外还可以用const来定义常量(称为const常量)。在C++程序中只使用const常量而不使用宏常量,因为其相比#define来定义常量有更多的优点。Const常量有数据类型,而宏常量没有数据类型。因此编译器可以对前者进行安全检查。

7.  建立在整个类中都恒定的常量:别指望const数据成员了,应该用类中的枚举常量来实现。由于const数据成员只在某个对象生存期内是常量,而对整个类而言是可变的,因为类可以创建多个对象,不同对象其const数据成员值可以不同。枚举常量不会占用对象的存储空间,他们在编译时被全部求值。枚举常量的缺点是它的隐含数据类型是整数,其最大值有限,且不能表示浮点数。

8.  如果参数是指针,并且仅做输入用,则应在类型前加const,以防止该指针在函数体内被以外修改。

9.  函数名字与返回值类型在语义上不可冲突,违反这条规则的典型代表是C标准库函数getchar。由于getchar的原型为int getcharvoid)。

10.              指针有些“似是而非”的特征:(1)指针消亡了,并不表示它所指的内存会被自动释放(2)内存被释放了,并不表示指针会消亡或者成为NULL指针。

11.              exit1)终止整个程序的运行?

posted on 2010-04-09 16:38 micromichael 阅读(2606) 评论(4)  编辑 收藏 引用

评论

# re: 高质量c/c++编程读书笔记(1) 2010-04-09 17:41 OwnWaterloo

又见这本垃圾书。
除了第1条, 其他全是狗屁。
  回复  更多评论   

# re: 高质量c/c++编程读书笔记(1) 2010-04-09 18:26 Jakcie

第1条,预定义的东西,一般都大写。
第7条,可以用 static的const成员变量来实现。
第11条,exit(n)就是直接kill掉自己。n是返回值。
  回复  更多评论   

# re: 高质量c/c++编程读书笔记(1) 2010-04-10 13:39 空明流转

建议看Code Complete II。你就知道这本书该是多么的小儿科。。。  回复  更多评论   

# re: 高质量c/c++编程读书笔记(1) 2010-04-11 09:48 coder

这种书也有读书笔记,冏...  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2010年4月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜