内联函数、函数重载、带默认值函数的函数学习总结

本文深入探讨了C++中的内联函数、函数重载、带默认值的函数、函数调用作用域及C与C++的相互调用等问题,解析了这些特性如何提升程序效率并确保安全性。

一、关于内联函数

       内联函数和函数重载都是C++种的语法,就是被inline修饰的函数,例如 inline char *fun(int );大意可将内联函数理解为在调用内联函数的时候,在调用处直接将函数函数展开,而没有标准的函数调用,也不存在标准的函数调用的函数栈帧开辟,节约了资源,提升了效率。但是并不是说所有 inline char *fun(int );中皆是如此,被inline修饰后,它只是建议编译器做内联展开处理,至于最后是否真的展开要有编译器决定,例如说在递归函数中就无法内联,因为递归函数要在运行的时候才能知道具体的调用,此时编译器在编译时无法做编译展开内联处理。

二、函数重载

     函数重载之所以能够实现是因为由于C和C++在编译时生成符号的规则不同,C由函数名决定符号,而C++由函数名加参数列表决定,重载函数必须是在相同的作用于且函数名相同的函数,注意,返回值无法作为函数重载的标志。

三、带默认值的函数

     在函数声明和定义的时候我们尅给他传递默认参数,但必须是从右往左的顺序,即使必须先声明右边,在声明左边;当调用已经声明的带默认值的函数时,如果给对应参数传递了新的值则按照新的值,没有咋使用默认值;值得一提的时候,给函数一个默认值,不仅能提高对象中方法的安全性还能提高函数的效率,在编译的时候如果使用的是默认值则将一个立即数传给寄存器,提升了效率。

四、函数调用的作用域问题

      在函数中无法再定义一个函数。但是可以再声明一个函数。当发生函数调用的时候,优先调用离自己最近的作用域;作用域优先级:局部>全局>整个工程;记住,重载的发生必须在同一个作用域。

五、C与C++的相互调用

C函数:void funC(int ,int );  C++函数: void funCpp(int,int);

C++中调用C:不能直接调用,把C函数的声明扩在extern “C”{、、、}中:

extern "C"

{

void funC(int ,int );

void funCpp(int ,int)

{

        funC(10,10);

}

C中调用C++:不能直接调用,把C++源码扩在extern “c” 中;

extern  C{

     void funCpp(int a,intb)

    {

           return a+b;

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值