注册 登录
编程论坛 C++教室

C++新手关于默认参数和函数重载的问题

心手2012 发布于 2012-03-19 22:08, 799 次点击
C++中默认参数的效果如何通过函数重载达到?最好能举例说明。
8 回复
#2
pangding2012-03-19 22:58
默认参数了就不能重载了,要不然有歧义。

比如,如果有了
void f(int a, int b = 0)
就不能
void f(int a)
了。
否则
f(5)
就不知道到底是以默认参数调用 f(5, 0) 还是调用重载的 f(5)。
#3
pangding2012-03-19 23:00
哦,你是说怎么重载达到默认参数的效果?

那还不容易:
先定义:
int f(int a, int b)
再重载:
int f(int a)
{
    return f(a, 0);
}

#4
迷上编程2012-03-20 00:01
这个我刚刚在学,体会不太深!!
#5
心手20122012-03-20 10:13
回复 2楼 pangding
哦 大致意思有点懂了,但是能给点完整的代码吗?你写的有点看不太懂,像返回值那还有点疑问。
#6
pangding2012-03-20 12:05
程序代码:
#include<iostream>
using namespace std;

int add(int a, int b)
{
    return a+b;
}

int add(int a)
{
    return add(a, 0);
}

int add2(int a, int b = 0)
{
    return a+b;
}

int main()
{
    cout << "1+1=" << add(1,1) << endl;
    cout << "1+0=" << add(1) << endl;

    cout << "1+1=" << add2(1,1) << endl;
    cout << "1+0=" << add2(1) << endl;

    return 0;
}
#7
心手20122012-03-20 17:21
回复 6楼 pangding
感激不尽。
#8
narutosusdo2012-03-20 22:55
回复 2楼 pangding
难道通过参数个数不能判断调用哪个吗?
#9
pangding2012-03-21 23:28
回复 8楼 narutosusdo
怎么判断?
1