1, 内联函数
- 代码量小(1 - 5行), 无复杂逻辑(if, while等), 这样的函数适合作为内联函数
- 优点:内联函数在调用时,直接用函数代码替换函数调用,避免频繁出入栈, 提高执行效率, 以空间换时间
- 用法:在函数声明或函数实现时,在函数前加关键字 inline 注意:内联函数的声明和实现必须写在同一个文件中(可以写在头文件中)
- 内联函数必须是和函数体声明在一起,才有效。 使用 inline 关键字只是建议编译器把这个函数当作内联函数处理 但是决定权在编译器, 如果这个函数太复杂, 不适合作为内联函数, 那么编译器还是把它当作普通函数
2, 函数重载
- 在C语言中, 函数名都是唯一的, 若有函数重名, 则无法编译
- 但在c++中, 函数名可以相同, 只要函数的形参列表不同, 这就是两个函数
- 因为编译器在编译器, 把函数的参数也提取出来了
- 例如
- C语言中, 编译时函数被提取为_swap
C++中, 被提取为_swap_int_int
所以只要形参列表不同, 这就是两个函数
3, 函数的默认参数
- 在C++中, 函数可以有默认参数
- 例如: int add(int a = 10; int b = 20; int c = 30) {return a+b+c};
- 注意: 默认参数只能在函数定义处添加
- 默认参数的添加必须从右往左
因为添加默认参数的目的是为了减少传参
而函数参数是从左往右匹配的
例如:int add(int a = 10; int b = 20; int c) {return a+b+c};
此时如果add(1, 2);
那么第三个参数c就没有值, 肯定就会报错
如果add(1, 2, 3);
那么设置默认参数就没有意义了,因为还是必须传3个参数
注意: 在重载函数中使用默认参数要特别注意
4,函数传参的总结
- 基本类型(int char double)和枚举类型一般用值传递
- 结构体, 类的对象一般用指针或引用传递
- 数组类型一般用指针传递
- 小技巧: 当函数参数超过7个以上, 比较多的时候, 可以把它封装在一个结构体中
然后传指针或引用
测试代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>