📜  C++中用户定义函数的类型(1)

📅  最后修改于: 2023-12-03 15:29:53.458000             🧑  作者: Mango

C++中用户定义函数的类型

C++中的函数分为两种类型:系统定义函数和用户定义函数。系统定义函数是指C++标准库中的函数,而用户定义函数则是由程序员自己定义的函数。

用户定义函数分为以下几种类型:

  1. 无返回值函数
  2. 有返回值函数
  3. 函数重载
  4. 内联函数
  5. 默认参数函数
  6. 参数数量可变函数

下面一一介绍。

1. 无返回值函数

无返回值函数是指没有返回值的函数,通常用于执行某些操作,而不需要给出返回结果。它的定义形式如下:

void functionName(parameters) {
    // function body
}

示例:

void printHelloWorld() {
    cout << "Hello, World!" << endl;
}
2. 有返回值函数

有返回值函数是指返回某个值的函数,它的定义形式如下:

returnType functionName(parameters) {
    // function body
    return value;
}

示例:

int addNumbers(int a, int b) {
    return a + b;
}
3. 函数重载

函数重载是指在一个程序中定义多个同名函数,但是参数列表不同,以便程序能够根据传递给函数的参数类型和/或数量来确定要调用的函数。函数重载的定义形式如下:

returnType functionName(parameterType1 parameter1) {
    // function body
}

returnType functionName(parameterType2 parameter2) {
    // function body
}

// ...

示例:

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

double getMax(double a, double b) {
    return a > b ? a : b;
}
4. 内联函数

内联函数是指在函数定义前加上inline关键字,通知编译器将其转化为直接的代码插入到调用处。这样可以避免函数调用的开销,但也会增加代码的长度。内联函数的定义形式如下:

inline returnType functionName(parameters) {
    // function body
}

示例:

inline int multiplyNumbers(int a, int b) {
    return a * b;
}
5. 默认参数函数

默认参数函数是指在定义函数时,为参数提供默认值,以避免在调用函数时必须为每个参数都提供一个值。默认参数函数的定义形式如下:

returnType functionName(parameterType1 parameter1 = defaultValue1, parameterType2 parameter2 = defaultValue2, ...) {
    // function body
}

示例:

int divideNumbers(int a, int b = 1) {
    return a / b;
}
6. 参数数量可变函数

参数数量可变函数是指在定义函数时,可以接受可变数量的参数。参数数量可变函数的定义形式如下:

returnType functionName(parameterType1 parameter1, parameterType2 parameter2, ...) {
    va_list argList;
    va_start(argList, lastFixedArgument);
    // function body
    va_end(argList);
}

其中,lastFixedArgument是参数列表中最后一个固定参数。

示例:

double average(int num, ...) {
    va_list argList;
    va_start(argList, num);

    double sum = 0;
    for (int i = 0; i < num; i++) {
        double value = va_arg(argList, double);
        sum += value;
    }

    va_end(argList);

    return sum / num;
}