C++易错知识点笔记(二)默认参数,内联函数

默认参数

1,什么是默认参数

C++的参数可以在参数列表中直接赋值作为默认参数,且只能在后面几位参数赋值,即只有后面几位参数可以作为默认参数。

2,默认参数的使用

默认参数可以写在声明或者定义任意一处,一般写在声明处,因为声明处可以暴露给其他人,而实现部分一般是程序员自己知道的。例如:
声明

int M_ParaMetre(int n1, int n2, int n3 = 1, int n4 = 2);

实现:

int `M_ParaMetre(int n1, int n2, int n3,int n4)`
{
	return 0;
}

3,调用情况

(1)M_ParaMetre(0,0);n1,n2,n3,n4参数的值就分别为0,0,1,2;即n1,n2参数的值由调用者指定,n3,n4的值是默认的。
(2)M_ParaMetre(0,0,3);n1,n2,n3,n4参数的值就分别为0,0,3,2;即n1,n2,n3参数的值由调用者指定,n4的值是默认的。
(3)注意不可以为n1,n2,n4指定参数而n3使用默认参数,也就是说只有最后的连续几位参数可以默认指定

内联函数

内联的意思是将整个函数都嵌入到程序里面,注意嵌入这个词,下面解释一下所谓嵌入的含义:
首先回忆函数调用的过程,当程序执行到函数调用所在地方的时候,程序会首先进入到函数体内部,这中间有过程要为函数开辟栈空间, 用于本次函数的调用中临时变量的保存、 现场保护。 这块栈空间我们称之为函数栈帧,即进出函数需要花费一定的开销。
而如果是下面的函数:

int GetMax(int a,int b)
{
    return a>b?a:b;
}
       

这个函数可能会经常被调用,而且它的执行开销很小,与之相比进出函数的开销反而有些不可忽略了,这个时候我们就可以将其定义为内联函数

inline int GetMax(int a,int b)
{
    return a>b?a:b;
}

在函数调用的时候例如GetMax(1,2)语句就会直接替换为1>2?1:2这个函数体;即没有函数调用过程,整个函数嵌入到了父程序中。
注意
1,内联函数是编译器的建议,有时候编译器不会把inline函数编译为内联函数,比如有时候代码体很大但是声明为内联函数。
2,内联函数一般写在头文件中
3,debug版本没有inline,方便调试

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值