函数

每个任务都可以分解成子任务,既可以用代码形式直接表示,也可以分成子任务。这个方法称为逐步求精。函数用来输入要解决的子任务的代码。描述函数的代码称为函数定义

function_header
  {
   instructions
  }

第一个括号前是函数定义的表头,括号中间是函数定义主体。函数表头包括返回值类型描述,名称(标识符)和正式参数 。通过函数的参数有限制,不能超过64。

函数不能从程序的其他部分多次调用。实际上,返回类型,函数标识符和参数类型组成函数原型

函数原型是函数说明,但是不是定义。由于明确说明返回类型和自变量类型列表,调用函数时严格检测类型和隐藏的类型转换。经常使用函数说明提高代码可读性。

函数定义必须与其说明相匹配。每个说明的函数都要下定义。

示例:

double                       // 返回值类型
linfunc (double a, double b) // 函数名和参量列表
  {
                             // 组合操作符
   return (a + b);           // 返回值
  }

 

返回操作符能够返回位于这个操作符的表达式的值。如果有必要,表达式值可以转换为函数结果类型。返回到零值的函数描述为型。

示例:

void errmesg(string s)
  {
   Print("error: "+s);
  }

 

通过函数的参量可能存在由特定类型常数指定的默认值。

示例:

int somefunc(double a,
             double d=0.0001,
             int n=5,
             bool b=true,
             string s="passed string")
  {
   Print("Required parameter a = ",a);
   Print("Pass the following parameters: d = ",d," n = ",n," b = ",b," s = ",s);
   return(0);
  }

 

如果任何参数有默认值,所有的子参数也一定有默认值。

错误说明示例:

int somefunc(double a,
             double d=0.0001,    // 声明默认值
             int n,              // 没有指定默认值 !
             bool b,             // 没有指定默认值 !
             string s="passed string")
  {                                          
  }           

另见

重载虚拟函数多态