过程形式(procedural),面向对象形式(object-oriented),函数形式(functional),泛型形式(generic),元编程形式(metaprogramming)
问题:
泛型形式和元编程形式的区别?
过程形式和函数形式的区别?
结论:
对于内置类型而言pass-by-value通常比pass-by-reference高效。
char * const 指针不可更改
const char* 指针指向内容不可更改
define存在的问题:
- 编译错误信息中无法展示宏名称,造成定位问题不够高效。define不会进入符号表。
- define变量未加括号引入问题。
- define替换变量使用++时引入问题。
#define CALL_WITH_MAX(a,b) f((a) > (b) ? (a) : (b))
CALL_WITH_MAX(++a,b); // a被累加两次,和预期不符
结论:
对于单纯常量,以const对象或enum替换define
对于类似函数形式的宏,以inline函数替换define
遗留问题:
enum的详细使用
原文:http://blog.csdn.net/zjufirefly/article/details/44205199