Effective C++中的条款

王朝c/c++·作者佚名  2006-05-19
窄屏简体版  字體: |||超大  

改变旧有的C习惯:

1. 尽量以const和inline取代#define

2. 尽量以<iostream>取代<stdio.h>

3. 尽量以new和delete取代malloc和free

4. 尽量使用C++风格的注释

内存管理:

5. 使用相同形式的new和delete

6. 记得在destructor中以delete对付pointer member

7. 对内存不足的状况预做准备

8. 撰写operator new和operator delete是应遵循公约

9. 避免遮掩了new的正规形式

10. 如果写了一个operator new对应的也要写一个operator delete

构造函数,析构函数和Assignment运算符:

11. 如果class内动态配置有内存,请为此class声明一个copy constructor和一个assignment运算符

12. 在constructor中尽量以initialization动作取代assignment动作

13. initialization list中的members初始化次序应该和其在class内的声明次序相同

14. 总是让base class拥有virtual destructors

15. 令operator=传回“*this的reference”

16. 在operator=中为所有的data members设定(赋值)内容

17. 在operator=中检查是否“自己赋值给自己”

类与函数的设计和声明:

18. 努力让接口完满且最小化

19. 区分member functions,non-member functions和friend functions

20. 避免将data members放在公开接口中

21. 尽可能使用const

22. 尽量使用pass-by-reference(传址)

23. 当你必须传回object时,不要尝试传回reference

24. 在函数重载和参数缺省化之间,谨慎抉择

25. 避免对指针型别和数值型别进行重载

26. 防卫潜伏的(模棱两可)状态

27. 如果不想使用编译器暗自产生的member functions,就应该明白拒绝它

28. 尝试切割global namespace(全局命名空间)

类与函数实现:

29. 避免传回内部数据的handles

30. 避免写出member functions,传回一个non-const pointer或reference并以之指向较低存取层级的members

31. 千万不要传回“函数内local对象的reference”

32. 尽可能延缓变量定义式的出现

33. 明智的运用inlining

34. 将文件之间的编译依赖关系降至最低

继承关系和面向对象设计

35. 确定你的public inheritance模塑出“is-a”关系

36. 区分接口函数和实现继承

37. 绝对不要重新定义继承而来的非虚拟函数

38. 绝对不要定义继承而来的缺省参数值

39. 避免在继承体系中作向下的转型动作

40. 通过layering技术来模塑has-a或is-implemented-in-terms-of的关系

41. 区分inheritance和templates

42. 明智的运用私有继承

43. 明智的运用多继承

44. 说出你的意思并了解你所说的每一句话

杂项讨论:

45. 清楚知道C++编译器为我们完成和调用那些函数

46. 宁愿编译和连接时出错也不要执行时出错

47. 使用non-local static objects之前先确定它已有初值

48. 不要对编译器的警告视为不见

49. 尽量让自己熟悉C++标准库

50. 加强自己对C++的了解

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航