C++函数特性
1.函数参数缺省值
- 全部指定
void fun(int a = 12, char c = 'c')
{
cout << "a="<<a <<" c="<< c << endl;
}
int main()
{
fun();
return 0;
}
结果:
2. 部分指定
void fun(int a , char c = 'c',float f = 123.123f)
{
cout << "a=" << a << " c=" << c<<" f="<<f << endl;
}
int main()
{
fun(1,'f',123.344f);
return 0;
}
结果:

注意点:
- 部分指定时,需要从左向右连续指定,下面为错误示范
void fun(int a = 12,char c,float f = 123.123f)
- 调用函数时,有默认值的参数可以不用传递实参,没有指定默认值的参数一定要传递实参
- 有默认值,传递实参,会将默认值覆盖掉
- 函数声明处指定值,函数实现时无须指定默认值
2. 函数重载
定义:在同一个作用域内,函数名相同,但函数列表,参数个数,参数类型不一样
示例:
int fun(int a)
int fun(char c)
int fun(int a,char c)
注意点:
- 默认参数与函数重载使用,可能会造成调用不明确
void fun1(int a, int b, int c = 0);
void fun1(int a, int b);
int main()
{
fun(1,2); //传递两个参数,编译正常,但运行时候会报错
}
2.返回值不可以作为函数重载的条件
int fun();
void fun(); //这种声明方式报重定义错误
- 参数是浮点型float,double的互为重载的函数,一定要注意参数传递
3. 防止头文件重复
在C语言中:
#ifndef _xx_xx_H
#define _xx_xx_H
........................
#endif
C++中直接在头文件前面处添加#pragma once表示后面的文件只编译一次,但是不是使用的编译器都支持的
本文使用 mdnice 排版