编程技巧:默认参数、占位符参数

  • 默认参数 default argument


        有时,管理同一函数的两个版本实在太费力,于是C++提供了一种补救机制:默认参数。默认参数是在函数声明时就已给定一个值,若在调用函数式没有指定这一参数的值,编译器就会自动插上这个值。

例:  可以吧下面这两个函数:

             void func(int  sz);     // qualities = 0

             void func( int sz, int qualities);

           用一个函数声明来代替:

           void func(int sz, int qualities=0);

           这样func()的定义就被简化了——单一的func(int , int)定义。现在下面两个函数的调用的结果是完全相同的!

       func(10),func(10,0);

       


默认参数类似于函数的重载,它为程序员提供了很多方便,他们都可以让我们在不同场景下采用相同的函数名。不同之处在于采用默认参数,当我们不想亲手提供这些值时,编译器会自动提供一个默认参数。 但如果我们面临的函数行为差异较大时,就不要在用默认参数了!

  • 占位符参数


函数声明时,参数不一定要有标识符,例:

void func( int  x, int = 0, float =1.1);


在C++中,函数定义时,不一定要有标识(zhi)符,如:

void func(int x, int, float flt){  /  *……* /  }


在函数体中,x与flt 可以被引用,但中间的这个参数值则不行,因为它没有名字。调用时还必须为这个占位符(placeholder)提供一个值(f(1)  或者 f(1,2, 3.0) )。这种语法允许把一个参数但作占位符而不去用它。其目的在于以后可以修改函数定义而不需修改所有的函数调用。当然,用一个有名字的参数也可以达到目的,但如果此参数没有在函数体中得到引用,那么编译器会给出警告,并认为犯了逻辑错误,为了避免这种情况,我们采用占位符参数。跟为重要的是,当我们开始时使用一个参数,,但最终却发现这个参数我们并不需要,可以将它删去而不产生警告错误,更不需改动其他地方的代码。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页