Chinaunix首页 | 论坛 | 博客
  • 博客访问: 496845
  • 博文数量: 111
  • 博客积分: 3160
  • 博客等级: 中校
  • 技术积分: 1982
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-24 11:49
个人简介

低调、勤奋。

文章分类

全部博文(111)

文章存档

2014年(2)

2013年(26)

2012年(38)

2011年(18)

2010年(27)

分类: 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& phones)

{

    theName = name;   //这些都是赋值,过程为调用theName的构造函数初始化,然后再用name进行赋值,操作2次。

    theAddress = address;

    thePhones = phones

    numTimesConsuted = 0;

}


ABEntry::ABEntry(const std::string& name, const std::string& address,

                         const std::list& phones): 

 theName(name),

 theAddress(address),

 thePhones(phones),

 numTimesConsuted(0)

{

}


请记住:

1、为内置型对象进行初始化,因为c++不保证初始化他们。

2、构造函数最好使用成员初值列,而不要在构造函数内使用赋值操作,初始列列出的成员变量,其排列次序应该和它们在class中声明的次序相同。

3、为避免“跨编译单元之初始化次序”问题,请以 loca static对象替换non-local static对象。



















阅读(1726) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~