1.6 C和C++
C被选C++的基础语言是因为:
1.是通用的,简洁的,相对低级的.
2.适合用于大部分系统设计工作.
3.可以在任何地方的任何系统上运行.
4.适用于UNIX程序设计环境.
1.6.1 给C程序员的建议
1.在C++里几乎不需要用宏, 用const或enum定义明显的常量,用inline避免函数调用额外的开销,用template去刻划一组函数或者类型,用namespace去避免名字冲突.
2.不要在你需要变量之前去声明它,以保证你能立即对它进行初始化.声明能出现语句的所有位置上,可以出现在for语句的初始化部分,也可以出现在条件中.
3.不要用naloc( ),new运算符能将同样的事情做好.对于ralloc( ),请试一试vector( ).
4.试着去避免void*,指针算术,联合和强制,除了在某些函数和类实现的深层之外.在大部分情况下,强制都是设计错误的指示器.如果你必须使用某个显式的类型转换,请设法使用一个新的强制,设法写出一个描述你想做的事情更精确的语句.
5.尽量少使用数组和C风格的字符串.与传统的C风格相比,使用C++标准库中的string和vvecter常常可以简化设计.
1.7有关在C++里编程的思考
完成设计一个程序工作的三个步骤:
1.取得对问题的一个清晰的理解(分析).
2.标识出在一个解决方案中所设计到的关键形概念(设计).
3.用程序去表达这个解决方案(编程).
1.8 忠告
学习C++中或许应该考虑的'规则':随着你变得更加熟练,你将能把它转化为某种更适合你的那类应用系统或者你自己的程序设计风格的东西,要写出一个好程序,需要智慧,品味,和耐性.
1.程序的结构尽可能地直接反映问题解决方案的思想:
a.如果你能把它看成一个独立的概念,就把它做成一个类.
b.如果你能把它看成一个独立的实体,就把它做为某个类的一个对象.
c.如果两个类有共同的界面.,就把这个界面做成一个抽象类.
d.如果两个类的实现有某种显著的共同东西,就把这些共性做成一个基类.
e.如果一个类是一种对象的容器,就把它做成一个模板.
f.如果一个函数实现对某容器的一个算法.将它实现为一簇容器的可用的模板函数.
g.如果一组类.模板互相之间有某种逻辑关系.就把他们放在一个名字空间里.
2.在你定义一个并不是实现某个象矩阵和复数这样一个数学对象的类的时候.或者定义一个低层的类型如连接表的时候:
a.不要使用全局数据,使用成员.
b.不要使用全局函数.
c.不要使用公用数据成员.
d.不要使用友元除非是为了避免[a]或[c].
e.不要在一个类里放类型域,采用虚函数.
f.不要使用在线函数,除非作为效果显著的优化.
这些粗略的使用规则,不是万古不变的定律.只应使用在合适的地方,从来没有任何东西能够代替智慧,经验,常识和好的鉴赏力.
Leo chen
2006 /2/23 于武汉理工