条款01:视C++为一个语言联邦
- 多重范型编程语言,在某个次语言中,各种高效编程守则简单易懂;但从一个语言移到另一个语言,守则可能改变。
- 次语言类型:
- C:
- Object-Oriented C++:
- Template C++:
- STL:
条款02: 尽量以const,enum,inline替换 #define(?)
- 宁可以编译器替换预处理器。
- #define 的记号也许被预处理器移走了,编译器也许从未看见,可能没进入记号表,编译时带来困惑
- #define 不能创建 class 专属常量
//
- enum hack:
//
(1) 某方面比较像 #define 而不像 const;
(2) 实用主义
5. 不用 #define 实现宏
总结:
- 对于单纯常量,最好以 const 对象或 enums 替换 #defines。
- 对于形似函数的宏(macros),最好用 inline 函数替换 #defines。