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

  • Post author:
  • Post category:其他


默认参数的函数

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 版权协议,转载请附上原文出处链接和本声明。