inline
- 内联函数类似于宏函数,会在被调用处进行代码展开,省去了参数压栈、栈帧开辟与回收,结果返回等,从而提高程序运行速度
- 与宏函数不同,内联函数具有函数特性,在运行时可调试;在代码展开时会做安全检查或自动类型转换;类中声明同时定义的成员函数,自动转化为内联函数,因此内联函数可以访问类的成员变量;
- 内联函数只是对编译器的建议,是否对函数内联在于编译器,编译器一般不内联包含循环、递归、switch 等复杂操作的内联函数
- 内联以代码膨胀(复制)为代价,消除函数调用带来的开销。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。
- inline 函数无法随着函数库升级而升级。inline函数的改变需要重新编译,不像 non-inline 可以直接链接。
- inline可以修饰虚函数的,但是当虚函数表现多态性的时候不能内联,因为编译器无法知道运行时调用哪个
还没有评论,来说两句吧...