内联函数&&函数重载&&函数缺省值

1、内联函数

为了减少函数调用的开销,引入了内联函数机制。编译器处理对内联函数的调用语句时,是将整个函数的代码插入到调用语句处,而不是产生调用函数的语句。

inline int max(int a,int b)
{
if(a>b)return a;
return b;
}

2、函数重载

一个或者多个函数,名字相同,然而参数个数或者参数类型不同,这叫做函数的重载。

编译器根据调用语句的实参的个数和类型判断具体调用的是哪个函数。

(1) int max(double f1,double f2)
(2) int max(int n1,int n2)
(3) int max(int n1,int n2,int n3 )

max(3.4,2.5);//调用(1)
max(2,3);//调用(2)
max(1,2,3);//调用(3)
max(2,2.4);//error,二义性,编译器不知道调用哪个函数;如果没有第一函数,则参数会进行转化调用第二个函数;如果没有第二个函数,则调用第一个函数;

int max(int a,int b=2)
{
    cout<<a<<b<<endl;
}
int max(int a)
{
    cout<<a<<endl;
}
int main()
{
    max(1)
    return 0;
}
[Error] call of overloaded 'max(int)' is ambiguous

这时编译器不知道调用哪个函数,因此报错。
Note:python 中没有重载函数

3、函数的缺省值

在c++中,定义函数的时候可以让最右边的连续若干个参数有缺省值,那么调用函数的时候,若相应位置不写参数,参数就是缺省值。

void fun(int a,int b=2,int c=3)

fun(10);//等效于fun(10,2,3)
fun(10,10);//等效于fun(10,10,3)
fun(10, ,10);//不行,只能最右边的连续若干个参数缺省

python中:

def fun(a,b=2,c=3):
print a
print b
print c
fun(10)
fun(1,b=2)
前两个正确,下边一个错误,错误原因:
non-keyword arg after keyword arg
fun(1,b=2,4)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值