1.c++中的内联函数和常规函数一样,它们都是函数。也是按值传递的,如果参数是4+7,函数就会被传递为表达式的值,但是宏就不一样了,它就是进行单纯的替换而已,那么在面对定义宏的时候,如果没有处理好的话就会生成我们意想不到的值,这不是我们想要的(在一定的程度上,使用宏没有使用内联函数安全。如果定义的宏能用内联函数实现就尽量用内联函数来实现)。
2.和普通函数相比,在一定的程度上类联函数的相率是要高的,那是因为,普通的函数在程序中被调用的时候,还有一个跳转到普通函数内存地址,然后才能调用函数的功能,但是内联函数不一样,它是直接将自己的代码内嵌到程序之中,这样就少了去寻址,来调用函数的时间开销,所以在一定的程度上效率有所提高,但是这也是要付出代价的,代价就是在每次用到函数就得将函数的代码放到相应的地方,这样就需要额外的空间来存放它,那么如果有十个地方调用了它,那么它在整个程序中就是十份拷贝。还有就是就算你想将函数定义为内联函数,但是编译器不一定将函数定位为内联函数,因为,也许你的函数代码容量过大,而导致需要的空间太大,或者函数自己在调用自己(内联函数不能递归),因此就不能将函数设定为内联函数。
举个例子:#define ABS(x) ((x)>0? (x):-(x)) 当++i出现时,宏就会歪曲我们的意思,换句话说就是:宏的定义很容易产生二意性。再这样的里诶在中,i将被加两次。显然这不是我们想要的。