1. 首页
  2. 编程语言
  3. C++ 
  4. 《机器人编程的缺省参数》第二版

《机器人编程的缺省参数》第二版

上传者: 2024-07-23 23:30:58上传 PDF文件 14.32MB 热度 11次

在讨论C++中的缺省参数时,我们可以发现它们极大地方便了代码的编写和维护。比较两个stash构造函数,它们表面上看似没有什么区别,但实际上,第一个构造函数只是第二个构造函数的一个特例——它的初始大小为零。很显然,创建和管理两个版本的同一个函数未免有些浪费精力。那么,有没有更高效的方法呢?答案是肯定的,C++中的缺省参数提供了一个优雅的解决方案。

缺省参数是在函数声明时给定的一个默认值。如果在调用函数时没有指定这个参数的值,编译器会自动插入这个默认值。stash(int Size)和stash(int Size, int Quantity)可以用一个函数声明来代替:stash(int Size, int Quantity=0)。这样,stash(int)定义就简化为一个单一的stash(int, int)定义。

现在,定义对象stash A(100)和B(100,0)将产生相同的效果。对于A,编译器会自动将第二个参数设置为零,因为它是缺省参数。这种方式不仅简化了代码,还避免了重复编写类似函数的麻烦。编译器能够看到缺省参数并允许这样的调用,这使得代码更加简洁和直观。

缺省参数和函数重载一样,都给程序员提供了极大的便利,允许在不同情况下使用同一个函数名。不过,当我们不想手动提供某些值时,缺省参数就显得特别有用。在上面的例子中,使用缺省参数代替函数重载是一种很好的实践,避免了重复代码。然而,如果函数之间的行为差异较大,缺省参数就不太适用了。

使用缺省参数时,需要牢记两条规则。只有参数列表末尾的参数才能是缺省的,这意味着我们不能在一个缺省参数之后再跟一个非缺省的参数。其次,一旦开始使用缺省参数,那么之后的所有参数都必须是缺省的。这些规则确保了编译器能够正确处理缺省参数。

缺省参数通常在函数声明中给出,通常是在头文件中,这样编译器在使用该函数之前就知道了缺省值。有时,为了方便阅读,会在函数定义处添加一些缺省的注释值。例如:


void fn(int x /*=0*/) {

  //...

}

这种语法允许我们将一个参数当作占位符而不使用它,目的是为了以后可以修改函数定义而无需修改所有的函数调用。当然,用一个有名字的参数也能达到同样的目的,但如果我们定义的这个参数在函数体内没有使用,就显得有些多余了。

如果你对C++中的缺省参数和函数重载有更多兴趣,不妨参考以下资源:C++函数重载和缺省函数的整理归纳C++中构造函数的参数缺省的详解

下载地址
用户评论