C++篇之默认参数与函数重载

默认参数的函数
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

猜你喜欢

转载自blog.csdn.net/Allone2333/article/details/81434799