#define Max(a, b) (a)>(b) ? (a) : (b)
//在遇到Max(++a, b )这样的调用的时候,总会带来副作用.但我们又总想宏定义带来的效率,该怎么办呢? inline
..
template<typename T>
inline T Max(const T& a, const T& b)
{
return a > b ? a : b;
}
一.视C++为一个语言联邦
其实也就是说C++组成,包括四部分:
1. c语言;
2. Object-Oriented C++,即面向对象,什么封装,继承和多态等等;
3. Template C++;
4. STL;
二.尽量以const enum inline替换#define
1. const 与 #define
#define AspectRatio 1.653
const double AspectRatio = 1.653;
预处理器”盲目地将宏名称替换为1.653”可能导致目标码出现多份1.653,若改用常量,绝不会出现此种情况.
2. enum 与 #define
这个似乎不容易遇到
3. incline与#define
最典型的例子:
这样,即获得宏一样的效率,又不会有副作用.
三.尽可能用const
四.确保对象被使用前已被初始化
1. 为内置对象进行手工初始化,因为C++不保证初始化它们.
2. 构造函数最好使用成员初值列,而不要在构造函数本体内使用赋值操作.初值列列出的成员变量,其排列次序应该和它们在class中的声明次序相同.
3. 为免除”跨编译单元之初始化次序问题”,以localstatic 对象替换 non-local static 对象.