在C++中,函数是执行特定任务的独立代码块。它们允许代码重用,提高程序的可读性和可维护性。以下是C++中函数用法的一些基本小结:
### 1. 函数定义
函数定义包括返回类型、函数名、参数列表(可选)和函数体。
// 示例:定义一个无参数、返回int的函数
int add() {
return 5 + 3;
}
// 示例:定义一个带参数、返回void的函数
void printHello(const std::string& name) {
std::cout << "Hello, " << name << "!" << std::endl;
}
### 2. 函数调用
使用函数名后跟圆括号(包含传递给函数的参数,如果有的话)来调用函数。
int result = add(); // 调用add函数,并将返回值赋给result
printHello("Alice"); // 调用printHello函数,并传递字符串"Alice"作为参数
### 3. 参数传递
C++支持按值传递和按引用(或指针)传递参数。
- **按值传递**:函数接收参数的副本。在函数内部对参数的修改不会影响到原始数据。
- **按引用传递**:函数直接访问传递给它的原始数据。使用引用时,需要在函数声明和定义中的参数前加`&`。
### 4. 函数重载
同一作用域内可以有多个同名函数,只要它们的参数列表(参数的数量、类型或顺序)不同即可。这称为函数重载。
void print(int num) {
std::cout << "Number: " << num << std::endl;
}
void print(double num) {
std::cout << "Double: " << num << std::endl;
}
### 5. 函数返回类型
函数可以返回任何有效的数据类型,包括自定义类型。如果没有返回值,则使用`void`作为返回类型。
### 6. 递归函数
函数可以调用自己,这称为递归。递归函数必须有明确的终止条件,以防止无限递归。
int factorial(int n) {
if (n == 0) return 1;
else return n * factorial(n - 1);
}
### 7. 内联函数
使用`inline`关键字声明的函数请求编译器尝试在每个调用点内联展开函数体,以减少函数调用的开销。但请注意,这是向编译器的建议,编译器可能忽略它。
inline int max(int a, int b) {
return (a > b) ? a : b;
}
### 8. 模板函数
模板函数允许编写与类型无关的函数。在函数定义前加上模板参数列表,然后在函数参数和返回类型中使用这些模板参数。
template <typename T>
T add(T a, T b) {
return a + b;
}
以上是C++中函数用法的一些基本小结。希望这能帮助你更好地理解和使用C++中的函数。