默认参数的函数
1 调用函数时可以不指定全部参数
2 为可以不指定的参数提供默认值
void func(int a = 1,int b ,int c = 3,int d = 4);//error
void func(int a ,int b ,int c = 3,int d = 4);//ok
//void func(int ,int ,int = 3,int = 4);也可以
调用的方法规定为:
func(10,15,20,30);//ok调用时给出所有实参
func();//error :参数a没有默认值
func(12,2);//ok 参数c和d 默认
func(2,15, ,20);//error 只能从右至左顺序匹配默认
函数重载:
两个以上的函数取相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载。
注意两点:
1 两个及以上的函数取相同的函数名,2 参数的个数或者类型不同
如果一组重载函数(可能带有默认参数)都允许相同实参个数的调用,将会引起调用的二义性,就会报错。比如:
void func(int);
void func(int , int = 4);
void func(int = 3, int = 4);
func(7);//error,编译器不知道调用了以上三个函数中的哪一个
func(20,30);//到底调用了后面两个函数中的哪一个?编译器也不知道,所以报错。
常见的C语言头文件格式
#ifndef _FUNC_ //防止头文件重复包含
#define _FUNC_
#ifdef _cplusplus //如果编译器是c++的,则按照c语言的规则去进行函数名称的解析,不要按照函数重载
extern "C" {
#endif
...
void func();
...
#ifdef _cplusplus
}
#endif
#endif
版权声明:本文为Allone2333原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。