内联函数与宏
宏 ,我们有时会定义一些预处理宏,如 #define COMP(x) ((x)>0?(x):0) 就定义了一个宏。 使用宏的原因是——函数调用有一定的时间和空间开销(在函数调用的使用程序跳到函数所在内存中的地址,执行完之后再跳回原来的位置继续执行。这种转移需要保存现场并记忆当前内存位置,执行完函数之后再恢复现场),而宏只是在预处理的地方把代码展开,不需要额外的时间空间开销,因而提高了效率。 内联函数 ,使用Inline来定义,在类的内部定义了函数体的函数被默认为内联函数。 内联函数在 C++类中,应用最广的,应该是用来定义存取函数。 我们定义的类中一般会把数据成员定义成私有的或者保护的,这样,外界就不能直接读写我们类成员的数据了。读写就必须使用成员接口函数来进行。如果我们把这些读写成员函数定义成内联函数的话,将会获得比较好的效率。 Class Test{ Private: Int test; Public: Int getTest(){ return test;} Void setTest(int t) {test=t;} } 内联函数和宏的区别在于,宏是由 预处理器 对宏进行替代,而内联函数是通过 编译器控制 来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销