3.函数的升级

1、C++中推荐使用内联函数替换宏定义的代码片段。

      内联函数声明时inline关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求。使用内联函数免去了压栈,跳转,返回操作,并且比宏定义的代码片段更安全,因为它有参数检查和返回类型的检查,也没有宏的副作用。但是,C++编译器不一定准许内联函数的请求,内联函数的实现机制是使用符号表。

    内联函数的限制:

       1.不能存在任何形式的循环语句;

       2.不能存在过多的条件判断语句;

       3.函数体不能过于庞大;

       4.不能对函数进行取址操作;

       5.内联函数声明必须在调用语句之前。

2、函数的默认参数

    在C++中可以在函数声明时为参数提供一个默认值。在一个文件中,只能为一个形参指定默认形参一次。只有参数列表后面部分的参数才可以提供默认参数值。

3、在C++中可以为函数提供占位参数

  只有参数类型声明,没有参数名,在函数内部无法使用

   如 int func(int a, int b, int ){ ...... }      

    意义:为以后程序的扩展留下线索,兼容C远中可能粗线的不规范写法,如:int func(int a, int b, int = 0){ ..  }

4、重载-----函数重载

     函数重载是指函数名相同,函数的参数的个数、参数的顺序、参数的类型至少有一个不同,但是和函数的返回值没有一点关系。

     当函数默认参数遇上函数重载时,可能会存在二义性,因此二者不要同时使用。

    如:int func(int a, int b, int c = 0) {.....}    和int func(int a, int b){......}           当调用函数func(1,2)时会产生二义性。

    当函数重载遇上函数指针时,要根据重载规则挑选与函数指针的参数列表一致的候选者,并且严格匹配候选者的参数类型与函数指针类型一致。

                             typedef int(*PFUNC) (int a);    

                             PFUNC p = func; 

                             p(1); //调用的是  int func(int a);

5、C++和C的相互调用

      用extern关键字强制让C++编译器对代码进行C方式编译。

         extern "C"                                         #ifdef  __cplusplus

       {                                                         extern "C"

            //代码段                                        {

      }                                                          #endif

                                                                    //代码段

                                                                #ifdef __cplusplus

                                                                 }

                                                                #endif

C语言中不能存在重载函数,所以当让C++代码以C语言方式编译时,不能包含重载函数。

                                                          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值