1.宏是在预处理阶段处理,模板是在编译阶段处理
2.宏不会进行类型检查,只会单纯的进行文本替换,模板会进行类型检查。比如下面代码模板就会出错,而宏不会
3.宏直接就可以产生代码,而编译器遇到模板定义时,并不产生代码,只有当模板实例化后时才会产生代码。
1.宏是在预处理阶段处理,模板是在编译阶段处理
2.宏不会进行类型检查,只会单纯的进行文本替换,模板会进行类型检查。比如下面代码模板就会出错,而宏不会
3.宏直接就可以产生代码,而编译器遇到模板定义时,并不产生代码,只有当模板实例化后时才会产生代码。
max() 的宏实现与模板函数实现宏实现#define max(a,b) ((a) > (b) ? (a) : (b))只能处理int类型的
3.一般成员变量会通过形参列表或默认的构造函数进行初始化因此只能在类内初始化。4.类定
在很多方面,模板类似预处理宏,用给定的类型代替模板的变量。然而,模板和宏有很大的区别:宏:#define min(i, j) (((i) < (j)) ? (i) : (j))模板:template<class T> T min (T i, T j) { return ((i < j) ? i : j) }使用宏会带来如下问题:Ø &nbs
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M