C++关于重载函数的2道题

来源:百度知道 编辑:UC知道 时间:2024/05/31 00:05:42
判断这2组重载函数能否正常工作。
1 void f(char c='c',int m=2);
int f();
答案:不能 重载和默认参数发生混淆。
2 int func(int a,int b,int c);
void func(int a,int b);
float func(float a,int b);
float func(int &a,int b);
答案:能,int引用和int不是同一个类型,int引用的范围小于int。

这两题答案我都理解不了……

题1 , 如果只有void f(char c='c',int m=2); 因为函数f形参已经有了默认的值 char c='c',int m=2 当你直接调用f() 时 此时你虽然没有给c m传入值 但是默认有了c和2 如果你在函数内部 搞个cout 那f() 就会输出 c 和2 了
就是说 形参有默认值的情况下 你不传参数的调用函数 也是可以的
当然 对于 int f(); 本身就没有什么参数 直接调用f()也是可以的 如果两个都在 那程序就只能死给你看了,不知道调用哪个函数好

题2,int引用和int不是同一个类型 哈哈 这个我确实不知道 怎么样解释比较好 int i=1; int &p=i; i和p 当然不是一回事了 解释的不好 多多见谅

void func(int a,int b);
float func(int &a,int b);
这两个重载确实我是编译不过 哈哈

函数重载时参数列表不同:
参数个数不同
参数类型不同

1、void f(...) 中的参数为默认参数,调用时可直接用 f();与int f()混淆...
2、所有参数都不一样了...