内联函数
宏函数的缺陷:
必须要加括号保证运算完整
即使加括号,有些运算依然与预期结果不符
预定义宏函数没有作用域概念,无法作为一个类的成员函数,也就是说预定义宏没有办法表示类的范围。
内联函数基本概念
在C++中,用内联函数来实现宏函数的处理方式。但是内联函数本身也是一个真正的函数。内联函数具有普通函数的所有行为,区别在于内联函数会在合适的地方进行类似宏函数的进行展开。
普通函数定义内联函数
在普通函数前面添加inline关键字变成内联函数,但是必须把函数体和申明放在一起
inline void func(int a);//这样是错误的
inline void func(int a)
{
return a++;
}//把申明和实现放在一起才行
类中的内联函数
任何在类中定义的函数都是默认为一个内联函数
内联函数和编译器
内联函数如果太庞大了就不会有效了,所以编译器需要来处理。
所以在一些特殊情况下,写了关键字inline也不会按照内联函数的方式来处理:
循环
判断
函数体过于庞大
对函数进行取地址
总结: