内联函数的概念:
以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈开销,提高运行效率
适用内联函数的场景:
函数代码少,调用频繁
为什么要有内联函数:
1.内联函数在编译时会进行替换,少了函数的压栈开销,提高运行效率
2.宏函数的缺点:在预处理时展开了,因此不会进行参数类型检测,并不能进行调试,实现要求严格(参数要求带括号)
内联函数和宏函数的区别:
1.内联函数可以进行调试
2.内联函数实现简单,不需要加括号
3.内联函数运行时不会有副作用
C++中有哪些方式可以替代宏:
1.对于宏常量的替代:C++中使用const类型的常量来进行替换,因为在C++中,被const修饰的变量是常量,const修饰的变量在编译期间会被其常量值替换掉,const修饰的常量就会参与类型检测,程序的安全性就会更高。
2.对于宏函数的替代:宏函数就是使用内联函数来进行替换,替换时机不同,宏函数是在预处理阶段进行替换,内联函数是在编译阶段进行替换,因此内联函数参与到编译中,代码安全性高,好那个函数不是一个真正的函数,
内联函数的优缺点:
优点:内联函数在编译时展开,提高代码的运行效率
内联函数相较于宏可以进行调试,代码的安全性更高
缺点:内联函数会在调用时展开,有可能造成代码膨胀
注意:内联函数的声明和定义不能分开,因为编译器如果将其当成内联函数进行处理,会在定位文件的使用位置展开,相当于没有该函数,那么在其他文件中使用该内联函数会出现链接错误