a.宏定义函数:
优点:
提高了程序的可读性,同时也方便进行修改;
提高程序的运行效率:
使用带参的宏定义既可完成函数调用的功能,又能避免函数的出栈与入栈操作,减少系统开销,提高运行效率;
缺点:
由于是直接嵌入的,所以代码可能相对多一点;
嵌套定义过多可能会影响程序的可读性,而且很容易出错;
对带参的宏而言,由于是直接替换,并不会检查参数是否合法,存在安全隐患。
不能debug。
//macro
#define MYDELETE(ptr) \
delete ptr;\
ptr = NULL;
//macro
int* mymacro1 = new int;
if (mymacro1!=NULL)
{
MYDELETE(mymacro1);
}
b.内联函数:
C++增加了内联函数(inline),实现起来比带参数的宏更方便,这样的宏在C++中已经很少使用了。
b.1优点:相比较宏有以下优点。
1.使用宏,无法进行调试,内联函数可以。
2.使用宏无法访问类的私有成员,内联函数可以。
b.2 inline的原理:
代码替代
b.3inline的使用:
让一个函数成为内联函数,隐式的为在类