您的位置:首页 > 编程语言 > C语言/C++

Effective C++最新条款

2015-07-09 18:29 405 查看
说明:本内容摘自《Effective C++》侯捷译

01、视C++为一个语言联邦

同时支持过程形式,面向对象形式,函数形式,泛型形式,元编程形式的语言

02、尽量以const、enum,inline替换#define

对于单纯常量,最好以const对象或enums替换#define

对于形似函数的宏,最好改用inline函数替换#define

03、尽可能使用const

04、确定对象被使用前已先被初始化

05、了解C++默默编写并调用哪些函数

06、若不想使用编译器自动生成的函数,就该明确拒绝

07、为多态基类声明virtual析构函数

08、别让异常逃离析构函数

09、绝不在构造和析构过程中调用virtual函数

10、令operator=返回一个reference to *this

11、在operator=中处理“自我赋值”

12、复制对象不要忘记其每一个成分

13、以对象管理资源

14、在资源管理类中小心coping行为

15、在资源管理类中提供对原始资源的访问

16、成对使用new和delete时要采取相同形式

17、以独立语句将newed对象置入智能指针

18、让接口容易被正确使用,不易被误用

19、设计class犹如设计type

20、宁以pass-by-reference-to-const替换pass-by-value

21、必须返回对象时,别妄想返回其reference

22、将成员变量声明为private

23、宁以non-menber、non-friend替换member函数

24、若所有参数皆需要类型转换,请为此采用non-menber函数

25、考虑写出一个不抛异常的swap函数

26、尽可能延后变量定义式的出现时间

定义一个变量,他的类型带有一个构造函数或析构函数,如果该变量没被使用(比如中间隔了一个异常),就得承受构造和

析构成本。

27、尽量少做转型动作

四种新式转型:const_cast(expression),dynamic_cast(expression),reinterpret_cast(expression),static_cast(expression).

28、避免返回handles指向对象内部成分

29、为“异常安全”而努力是值得的

30、透彻了解inlining的里里外外

31、将文件间的编译依存关系降至最低

32、确定你的public继承塑模出is-a关系

33、避免遮掩继承而来的名称

34、区分接口继承和实现继承

接口继承和实现继承不同,在public继承之下,derived classes总是继承base classes的接口

pure virtual函数只具体指定接口继承

简朴的(非纯)impure virtual函数具体指定接口继承及缺省实现继承

non-virtual函数具体指定接口继承以及强制性实现继承。

35、考虑virtual函数以外的其他选择

36、绝不重新定义继承而来的non-virtual函数

37、绝不重新定义继承而来缺省参数值

38、通过复合塑模出has-a或“根据某物实现出”

39、明智而审慎的使用private继承

40、明智而审慎的使用多重继承

41、了解隐式接口和编译期多态

42、了解typename的双重意义

43、学习处理模板化基类内的名称

44、将于参数无关的代码抽离templates

45、运用成员函数模板接受所有的兼容类型

46、需要类型转换时请为模板定义非成员函数

47、请使用traits class表现类型信息

48、认识template元编程

49、了解new-handler的行为

50、了解new和delete的合理替换时机

51、编写new和delete需固守常规

52、写了placement new也要写placement delete

53、不要轻易忽视编译器的警告

54、让自己熟悉包括TR1在内的标准程序库

55、让自己熟悉boost
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: