关于函数的特殊用途的语言特性的注意事项

1、默认实参就是函数在反复多次调用,赋予的值相同。反复出现的值就是默认实参。该实参可以包含也可以省略。一旦某个形参被赋予了默认值,其后面的所有形参都必须有默认值

2、一旦函数的形参提供了默认形参,调用该函数时,可以不提供任何参数。若想要给某个位置的形参修改参数,那么这个位置前面的形参,都要提供默认实参。

3、尽量将不怎么使用默认值的形参写在前面,经常使用默认值的形参写在后面。在给定的作用域内,一个形参只能被赋予一次的默认实参,并且该形参右侧的所有形参都必须有默认值,为了防止程序出现二义性

4、通常应该在函数声明中指定默认实参,并将声明放在合适的头文件里。

5、局部变量不能作为默认实参,除此之外,只要表达式的类型能转换成形参所需的类型就能作为默认实参

6、若在内层作用域内重新声明了外层作用域的同名变量,那么外层的同名变量就会被隐藏,但是若这个变量是作为一个函数的默认实参,那么默认实参的值还是是外层作用域的变量值。

7、机器在调用函数时,会出现一定的开销。将函数设置为内联函数可以避免函数调用的开销,也就是说设置为内联函数的话,函数在调用时,会在调用点内联的展开,这样就避免了函数调用的开销。inline内联说明只是向编译器发出一个请求,编译器可以选择忽略这个请求。

8、一般内联函数适合频繁调用,函数规模小的,不适合或者不支持内联递归函数。

10、constexpr函数是指作用于常量表达式的函数。定义该类函数有几项约定:函数的形参值、返回类型必须是字面值类型,并且函数体内部有且只有一条return语句constexpr函数被编译器隐式地指定为内联函数

11、constexpr函数体内也可以包含其他语句,只要这些语句运行时不执行任何操作就行。并且允许函数的返回值并非是一个常量,就是说返回值不一定是常量表达式

12、内联函数和constexpr函数可以多次定义,这点与其他函数不同。但是对于给定的内联函数和constexpr函数,函数的定义必须保持一致

原文地址:https://www.cnblogs.com/Dark-King/p/9488761.html