函数的默认值,内联函数,函数重载

函数默认值
c++在函数方面比c多了个默认值,实际是当给函数不传参数是该函数就会使用默认值对参数进行赋值,当然默认值是从右向左依次赋值
void sum(int a,int b=2,int c=3)
{}
int main()
{
sum(1);//因为a无默认值,所以要传参数
}
函数默认值的特点
自右向左,依次设计
默认值不能重复赋值(即如果函数声明和函数定义分开,函数声明设置了默认参数,函数定义不能再设置默认参数。
内联函数
C++中用 inline修饰的函数称之为内联函数
内联函数的特点:在函数调用点之间展开
好处:无函数开栈淸栈开销,速度快
inline函数只是给编译器的一个建议:如果函数执行的开销小于函数开栈的开销使用内联函数。
内联在debug版本不生效,只在release 生效
递归函数一定不会成为内联函数,编译器会将其按普通函数处理
inline函数与普通函数的区别
内联只是在函数前加inline,在之就是内部实现上,内联直接在调用点展开(和宏有些相似)而普通函数被调用时,系统首先跳跃到该函数的入口地址,执行函数体,执行完成后,再返回到函数调用的地方,函数始终只有一个拷贝。
inline函数与宏的区别
inline函数编译期间处理 有类型检查和安全检查 ,可以调试
宏在预编译期间处理,无类型检查和安全检查 , 不可调试
inline函数与static修饰的函数的区别
从作用域来看,两者都是只有本文件可见
static修饰变量和函数,而inline只修饰函数
static修饰的函数在符号表中产生的符号是local的,inline修饰的直接在调用点展开,不产生符号
函数重载
c++中不允许变量名称重复,但允许函数名重复,这为函数重载提供了条件
重载的依据
1函数名相同,形参类型不同
2除返回值不同外,其余参数类型相同
函数重载的三要素
1同名作用域
2同名
3参数不同
c++中函数符号由返回值,函数名,形参个数,形参类型共同决定
int sum(int a,int b=1,int c=2)
double sum(double a,double b,double c)
char sum(char a,char b char c)
三个函数共同构成函数重载

猜你喜欢

转载自blog.csdn.net/qq_43440004/article/details/85799937
今日推荐