一:内联函数inline
宏函数(带参数的宏)的缺点:
第一个在c中也会出现,宏看起来像一个函数调用,但是会有隐藏一些难以发现的错误。
第二个问题是c++特有的,预处理器不允许访问类的成员,也就是说预处理器宏不能用作类的成员函数
内联函数:内联函数为了继承宏函数的效率,没有函数调用时开销,然后又可以像普通函数那样,可以进行参数,返回值类型的安全检查,又可以作为成员函数
内联函数:是一个真正的函数。函数的替换 发生在编译阶段
![03939950fd93da152777f2a41e23efd7.png](https://i-blog.csdnimg.cn/blog_migrate/35ecdbd773a46f1b9d06f7e7fc77a961.png)
任何在类内部定义的函数自动成为内联函数。
![fbfc5102e20dbad033e4c045914deb91.png](https://i-blog.csdnimg.cn/blog_migrate/1d621841e980cd89e3f992315ed72fac.png)
内联函数条件:
1、不能存在任何形式的循环语句
2、不能存在过多的条件判断语句
3、函数体不能过于庞大 不能对函数进行取址操作
![0d14d4e568f0249039f567114a43d2d6.png](https://i-blog.csdnimg.cn/blog_migrate/98342c63a200528bb8463fb728054f21.png)
二:函数的默认(缺省)参数
c++在声明函数原型的时可为一个或者多个参数指定默认(缺省)的参数值,当函数调用的时候如果没有传递该参数值,编译器会自动用默认值代替。
![9138edfa34b758cd5e0de452479a027a.png](https://i-blog.csdnimg.cn/blog_migrate/8806eba06d6b7db0d6721dd31c52d681.png)
注意:
1、函数的默认参数从左向右,如果一个参数设置了默认参数,那么这个参数之后的参数都必须设置默认参数
![de1a8d560d5f8cf2f91f426c9e794c3b.png](https://i-blog.csdnimg.cn/blog_migrate/f709410d780b9008e5e89977ac1717b3.png)
三:占位参数(了解即可)
函数的参数只有类型名 没有形参名,这个参数就是占位参数
由于有类型名 所以 函数调用的时候 必须给占位参数传参。
由于没有形参名 所以 函数内部 是无法使用