函数
默认参数
#include <cstdlib>
#include <cstdio>
// 默认参数必须写在最后面,例如:int func(int a,int b = 0, int c = 2)
void test(int a, int b = 10)
{
printf("%d + %d = %d
",a,b,a+b);
}
int main()
{
test(1,2);
test(1); // 相当于test(1,10)
return EXIT_SUCCESS;
}
1 + 2 = 3
1 + 10 = 11
函数的声明和实现只能一个有默认参数
如果某个位置已经有了默认参数,那么后面的参数必须都是默认参数
占位参数
// 形参中只写数据类型的参数起占位作用,调用时必须传入实参
// 运算符的重载中会涉及到
int func(int a,int)
{
// ...
}
函数重载
条件
- 同一个作用域
- 参数顺序不同
- 参数数据类型不同
- 参数个数不同
例:
#include <cstdio>
#include <cstdlib>
int func()
{
printf("func()
");
}
int func(int a)
{
printf("func(int a)
");
}
int main()
{
func();
func(10);
return EXIT_SUCCESS;
}
func()
func(int a)
作用
#include <cstdio>
#include <cstdlib>
void print(int a)
{
printf("%d
",a);
}
void print(char a)
{
printf("%c
",a);
}
void print(double a)
{
printf("%g
",a);
}
int main()
{
print(1);
print('C');
print(3.14);
return EXIT_SUCCESS;
}
1
C
3.14
上面这段代码在C语言中是这样的:
#include <cstdio>
#include <cstdlib>
void printi(int a)
{
printf("%d
",a);
}
void printc(char a)
{
printf("%c
",a);
}
void printd(double a)
{
printf("%g
",a);
}
int main()
{
printi(1);
printc('C');
printd(3.14);
return EXIT_SUCCESS;
}
有种汇编语言的风味
注意事项
- 引用的两个版本:const和不加const
#include <cstdio> #include <cstdlib> void print(int &a) { printf("%d ",a); } void print(const int &a) { printf("%d ",a); } int main() { int a = 10; print(a); print(2); return EXIT_SUCCESS; }
10 2
- 如果用引用,就不要值传递