低调、勤奋。
分类: C/C++
2013-02-28 21:40:29
条款2:尽量以const, enum,inline 替换 #define
如:#define ASPECT_RATION 1.653
原因:deine定义的数据会在预处理阶段被处理掉,不会被编译器看到,且有可能导致目标吗出现多分1.653
采用常量替换:
const double ASPECT_RATION 1.653
请记住:对于单纯常量,最好以const对象或enum替换#define
对于形视函数的宏,最好用inline替换#define
条款3:尽可能使用const
如果关键字const出现在星号左边,表示被指物是常量,如果出现在星号右边,表示指针自身是常量,如果出现在星号两边
表示物和指针都是常量。
条款4: 确定对象使用前已经被初始化。
对于内置类型手动完成初始化。
如: int x = 0;
对于内置类型以外的任何东西,由构造函数将对象的每一个成员初始化。
在类中进行成员的初始化采用初始化成员列表如:
ABEntry::ABEntry(const std::string& name, const std::string& address,
const std::list
{
theName = name; //这些都是赋值,过程为调用theName的构造函数初始化,然后再用name进行赋值,操作2次。
theAddress = address;
thePhones = phones
numTimesConsuted = 0;
}
ABEntry::ABEntry(const std::string& name, const std::string& address,
const std::list
theName(name),
theAddress(address),
thePhones(phones),
numTimesConsuted(0)
{
}
1、为内置型对象进行初始化,因为c++不保证初始化他们。
2、构造函数最好使用成员初值列,而不要在构造函数内使用赋值操作,初始列列出的成员变量,其排列次序应该和它们在class中声明的次序相同。
3、为避免“跨编译单元之初始化次序”问题,请以 loca static对象替换non-local static对象。