📅  最后修改于: 2023-12-03 15:29:53.458000             🧑  作者: Mango
C++中的函数分为两种类型:系统定义函数和用户定义函数。系统定义函数是指C++标准库中的函数,而用户定义函数则是由程序员自己定义的函数。
用户定义函数分为以下几种类型:
下面一一介绍。
无返回值函数是指没有返回值的函数,通常用于执行某些操作,而不需要给出返回结果。它的定义形式如下:
void functionName(parameters) {
// function body
}
示例:
void printHelloWorld() {
cout << "Hello, World!" << endl;
}
有返回值函数是指返回某个值的函数,它的定义形式如下:
returnType functionName(parameters) {
// function body
return value;
}
示例:
int addNumbers(int a, int b) {
return a + b;
}
函数重载是指在一个程序中定义多个同名函数,但是参数列表不同,以便程序能够根据传递给函数的参数类型和/或数量来确定要调用的函数。函数重载的定义形式如下:
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;
}
内联函数是指在函数定义前加上inline
关键字,通知编译器将其转化为直接的代码插入到调用处。这样可以避免函数调用的开销,但也会增加代码的长度。内联函数的定义形式如下:
inline returnType functionName(parameters) {
// function body
}
示例:
inline int multiplyNumbers(int a, int b) {
return a * b;
}
默认参数函数是指在定义函数时,为参数提供默认值,以避免在调用函数时必须为每个参数都提供一个值。默认参数函数的定义形式如下:
returnType functionName(parameterType1 parameter1 = defaultValue1, parameterType2 parameter2 = defaultValue2, ...) {
// function body
}
示例:
int divideNumbers(int a, int b = 1) {
return a / b;
}
参数数量可变函数是指在定义函数时,可以接受可变数量的参数。参数数量可变函数的定义形式如下:
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;
}