跳至内容

Functions

函数

每个任务都可以分解为子任务,每个子任务可以直接以代码形式表示,或者进一步分解为更小的子任务。这种方法称为逐步细化。函数用于编写需要解决的子任务的代码。描述函数功能的代码称为函数定义:

function_header
  {
   instructions
  }

第一个大括号之前的部分是函数定义的头部,大括号之间的部分是函数定义的主体。函数头部包括返回值类型、名称(标识符)和形式参数)的描述。传递给函数的参数数量有限,不能超过64个。

函数可以在程序的任何其他部分根据需要多次调用。实际上,返回类型、函数标识符和参数类型构成了函数原型。

函数原型是函数声明,而不是其定义。由于返回类型和参数类型的明确声明,在函数调用过程中可以进行严格的类型检查和隐式类型转换。通常会在类中使用函数声明以提高代码的可读性。

函数定义必须与其声明完全匹配。每个声明的函数都必须被定义。

示例:

double                       // return value type
linfunc (double a, double b) // function name and parameter list
  {
                             // composite operator
   return (a + b);           // return value
  }

return运算符可以返回位于该运算符内的表达式的值。如果需要,表达式值将被转换为函数结果类型。可以返回:简单类型简单结构对象指针。使用return运算符不能返回任何数组、类对象或复合结构类型的变量。

不返回值的函数应描述为void类型。

示例:

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,    // default value 0.0001 declared
             int n,              // default value is not specified !
             bool b,             // default value is not specified !
             string s="passed string")
  {
  }

另请参阅

重载虚函数多态性

最后更新于