第一章:从c转向c++
条款1:尽量使用const、inline代替define——尽量使用编译器而不是预处理器
define是预处理阶段的宏替换,使用宏替换不便于调试,因为宏替换所使用的别名并不会在编译器生成的符号列表中。如果要定义常量,应该使用const,对于常字符串,则应该使用const char * const,当const只在类中使用时,为了只存在一份拷贝,应该定义为static如:
const char * const strdlversion = "1.0.0.1"
const double PI = 3.14.5926
class ci{
...
static const int MAX_FILE_PATH_LENGTH = 256;
};
另外还可以使用模板来取代宏以实现多种类型的某一功能,例如:
#define swap(a,b) do \
{\
a = a + b;\
b = a - b;\
a = a - b;\
} while (0);
template<typename U,typename V>
inline swap(U &u, V &v) {
U tmp = (U)v;
v = (V)u;
u &#