CherieLi Student

effective C++ 读书笔记

2017-12-10

  1. 尽量用const和inline, 而不用#define

  2. 尽量用iostream而不用stdio.h

  3. 尽量用new和delete而不用malloc 和free

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

  5. 对应的new和delete要采用相同的形式

  6. 析构函数里对指针成员调用delete

  7. 预先准备好内存不够的情况

  8. 写operator new和operator delete是要遵循常规

  9. 避免隐藏标准形式的new

  10. 如果写了operator new 就要同时写operator delete

  11. 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符

  12. 尽量使用初始化而不要在构造函数里赋值

  13. 初始化列表中成员列出的顺序和他们在类中声明的顺序相同

  14. 确定基类有虚析构函数

  15. 让operator=返回*this 的引用

  16. 在operator=中对所有数据成员赋值

  17. 在operator=中检查给自己赋值的情况

  18. 争取使类的接口完整并且最小

  19. 分清成员函数,非成员函数和友元函数

  20. 避免public接口出现数据成员

  21. 尽可能使用const

  22. 尽量用“传引用”而不用“传值”

  23. 必须返回一个对象时,不要试图返回一个引用

  24. 在函数重载和设定参数缺省值间慎重选择

  25. 避免对指针和数字类型重载

  26. 当心潜在的二义性

  27. 如果不想使用隐式生成的函数就要显式地禁止它

  28. 划分全局名字空间

  29. 避免返回内部数据的句柄

  30. 避免这样的成员函数:其返回值是指向成员的非const指针或引用,但成员的访问级比这个函数要低

  31. 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用。

  32. 尽可能地推迟变量的定义

  33. 明智地使用内联

  34. 将文件间的编译依赖性降至最低

  35. 使公有继承体现“是一个”的含义

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

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

  38. 决不要重新定义继承而来的缺省参数值

  39. 避免“向下转换”继承层次

  40. 通过分层来体现“有一个”或“用…来实现”

  41. 区分继承和模板

  42. 明智地使用私有继承

  43. 明智地使用多继承

  44. 说你想说的;理解你所说的

  45. 弄清C++在幕后为你所写、所调用的函数

  46. 宁可编译和链接时出错,也不要运行时出错

  47. 确保非局部静态对象在使用前被初始化

  48. 重视编译器警告

  49. 熟悉标准库

50.提高对C++的认识


Comments

Content