3.C++内联函数,默认参数,占位参数

小说:云服务器赚钱作者:建石海更新时间:2018-12-13字数:78515

剑尖越来越近,出手之人面露笑意,一瞬间,眼前为之一空,林风根本没有时间去看,那一瞬间完全凭借直觉,整个身子瞬间弹出。

电脑0投入赚钱软件

几个鬼子兵急忙将“歪把子”机枪搁在前面鬼子兵的肩头上,拼命朝半空中的那些空降兵射击,但为时已晚,谷队长他们已经成功的降落了下来,有几个空降兵降落到街道两侧的楼顶上,谷队长则带着几个人降落在汇山码头附近,还有几个空降兵则控制不好方向,落在了江面上。
这一天,终于是来到了。五个女人坐在一起,围成了一圈,叶扬就坐在她们的中间。

隐娘这些日子虽然时常与这孩子待在一起,却还是第一次看到他抽出大刀,见此刀极是眼熟,心中诧异。只是形势危急,她也没空多想,一边撒出佛光照定自己和小白,一边祭出古奇龙音剑,身随剑走。两人往前直闯,杀出血路。

3.C++内联函数,默认参数,占位参数


本章主要内容:

  • 1)内联函数(替代宏代码段)
  • 2)默认参数
  • 3)占位参数

 

1.C++内联函数分析

1.1讲解内联函数之前,首先回忆下之前讲的define宏定义:

之前讲过宏定义会经过预处理器进行文本替换,缺点就在于没有类型检查,没有任何编译过程,编译器根本不知道类型是什么.

所以,C++,当需要某个类型的常量时,可以使用const常量来替代宏常数,:

const int A=3;      <--->      #define A 3

 

1.2那如果#define 定义的是宏代码段,例子如下:

#include <stdio.h>
#define  MAX(A,B)       (A>B?A:B)
int main()
{
int a=5;
int b=4;
printf("%d",MAX(++a,b)); 
}

输出结果:

7 

这就是宏定义的缺点,因为上面的printf()会被预处理器展开为:

printf("%d", ((++a) > b ? (++a) : b ) );

从而a被加了两次,所以输出结果为7.

 

1.3所以C++便添加了内联函数来代替宏代码段

内联函数用inline关键字声明,比如上面的MAX(A,B),则可以替换为:

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

而内联函数和普通函数两者区别:

  • 普通函数:每次调用前,CPU都会保存现场(入栈),调用完后还要恢复现场(出栈)等额外开销.
  • 内联函数:就会在每次调用的地方,将内联函数里的代码段”内联地”展开,所以省去了额外的开销

注意:当内联函数里的代码过多,且流程复杂时,编译器可能会拒绝该函数的内联请求,从而变成普通函数

 

2.函数的参数默认值

C++中允许为函数提供参数默认值,主要有两种定义方式

1)函数声明时:

int show(int x=10); //声明show函数,并定义参数x默认值为10
int main() { show(); } int show(int x) { printf("x=%d ",x); }

输出结果:

x=10

 

2)没有函数声明时:

 int show(int x=10)     //定义参数x默认值为10
{
  printf("x=%d
",x);
}

int main()
{
  show();
}

输出结果:

x=10

 

2.1当有多个默认参数时

1)定义时,参数的默认值必须从右向左定义,例如:

int show(int x, int y,int z=10);        //定义正确

int show(int x, int y=8,int z=10);      //定义正确

//int show(int x=6, int y=8,int z);     //定义错误,没有从右开始定义

//int show(int x, int y=8,int z);       //定义错误,没有从右开始定义

2)调用函数时,参数则从左向右匹配,例如:

#include <stdio.h>
int show(int x, int y=8,int z=10);  

int main()
{
  show(6);              //x=6,y=8,z=10;
  show(6,7);            //x=6,y=7,z=10;
  show(6,7,8);          //x=6,y=7,z=8;
  return 0;
}

int show(int x,int y,int z)
{
printf("x=%d  y=%d  z=%d
",x,y,z);
}

输出结果:

x=6  y=8  z=10

x=6  y=7  z=10

x=6  y=7  z=8

3.C++函数的占位参数

占位参数,是指该函数的参数只有类型声明,却没有参数名

注意:该占位参数在函数体内是无法被使用的

实例1:

int func(int x,int );

... ...

func(1,2);   //调用func函数

实例2,使用占位参数+默认参数一起使用:

int func(int =0,int =0);

... ...

int main()
{
/*调用func函数*/
  func();
  func(2);
  func(1,2);  
  return 0;
}

从实例2可以看到,其实占位参数和默认参数主要目的是为了兼容代码

  

 未完待续,下章接着来学习C++函数重载~

当前文章:http://0477auto.com/play/1ujksj4c1g.html

发布时间:2018-12-13 02:04:35

网赚交流咨询 开一个婴幼儿店赚钱吗 什么工作来钱最快 哪些软件可以赚钱提现 兼职网站源码 创意小本生意 最近淘宝店铺没生意 2018年做点什么生意好

编辑:杜伯成建

我要说两句: (0人参与)

发布