一个人对C 了解得越好,在写C++程序时大概就越难避免C 的风格,并会因此丢掉C++ 的某些潜在优势。这里是几个有关的要点,在这些地方做同样的事情时,在C++ 里存在比C更好的方式:
[1] 在C村里几乎不需要用宏。用const或enum 定义明显的常量,用inline避免函数调用的额外开销,用template去刻画一族函数或者类型,用namespace 去避免名字冲突。
[2] 不要在你需要变量之前去声明它,以保证你能立即对它进行初始化。声明可以出现在能出现语句的所有位置上,可以出现在10r语句的初始化部分,也可以出现在条件中。
[3] 不要用malloc( ) 0 new 运算符,能将同样的事情做得更好。对于realloc( ),请试一试vector()。
[4] 试着去避免void食、指针算术、联合和强制,除了在某些函数或类实现的深层之外。在大部分情况下,强制都是设计错误的指示器。如果你必须使用某个显式的类型转换,请设法去用一个"新的强制" ,设法写出一个描述你想做的事情的更精确的语句。
[5]尽量少用数组和C风格的字符串。与传统的C风格相比,使用C++标准库string 和vector常常可以简化程序设计。如果要符合C的连接规则,一个C++函数就必须被声明为具有C连接的。
最重要的是,请试着将程序考虑为一组由类和对象表示的相互作用的概念,而不是一堆数据结构和一些去拨弄数据结构中二进制位的函数。
到今天,许多人使用C++ 已经十几年了。大部分人是在某个单一的环境里使用C忡,并己学会了在早期编译器和第一代的库所强加的束缚之下生存。经常可以看到这种情况,一个很有经验的C++程序员不仅很多年没有注意引进的新特征,也没有看到有关特征之间关系的变化,而这些情况已经使一些全新的程序设计技术变成可行的东西了。换句话说,你在第一次学习C++时没有想到或者认为不实际的东西,或许今天已经变成一种高明的方式。你只有通过重新考察基础的东西才能弄清楚它们。
注:本文节选自《The C++ Programming Language 》;