1、改善程序设计技术的50个有效做法第二版 2002.3Scott Meyers侯 捷 译 如何完成较好的设计如何避免常见的问题如何提高效率的一些准则不是放之四海而皆准的唯一真理C+新标准新的类型 bool 有两个值 true, false.typedef int bool;const bool false=0;const bool true=1;新的转型动作static_cast(expression) /将表达式 expression转为 type类型const_cast(expression) /将常数类型 expression转为非常数类型dynamic_cast(expression)
2、/安全向下转型 见 39reinterpret_cast(expression) /函数指针类型转换 不常用1. 尽量以 const和 inline取代 #define#define 是一个宏,只能被预处理,而不被编译,用它定义的常量甚至不被编译器看见,因此不能发现使用中的错误。用 #define定义一个简单函数,必须为每一个参数加上一个括号,容易造成错误。用内联函数高效准确。 define ratio 1.653/编译器看不见 ratio,只看见 1.653/一旦出错,不会报告const double ratio=1.653;const char* const name=“Scott Mey
3、ers”;/字符串常量In Class 常量 用静态变量类内声明,类外定义。class EngineerConstantsprivate: static const double Factor; ;const double EngineerConstants:Factor=1.35;2. 尽量以 取代 scanf printf 函数不能扩充用来输入输出自定义类型的变量。cinix;coutix;可以扩展,方便得多改变旧有的 C习惯( shifting from C to C+)1. 尽量以 const和 inline取代 #define#define 是一个宏,只能被预处理,而不被编译,用它定
4、义的常量甚至不被编译器看见,因此不能发现使用中的错误。用 #define定义一个简单函数,必须为每一个参数加上一个括号,容易造成错误。用内联函数高效准确。3. 尽量以 new和 delete取代 malloc和 freemalloc 和 free 不能调用构造函数,析构函数new 和 delete则可。不能混用 new delete malloc free 必要用 C库函数时检查是否用到 malloc重新用 new和 delete改过。4. 尽量使用 C+风格的注释形式/* */ 要保证成对出现,不小心错一大片。 / 好看好读可以混合使用当心! define light_speed 3e8 /m/sec(in a vacum)