| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 799 人关注过本帖
标题:C++新手关于默认参数和函数重载的问题
只看楼主 加入收藏
心手2012
Rank: 2
等 级:论坛游民
帖 子:41
专家分:14
注 册:2012-3-15
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:8 
C++新手关于默认参数和函数重载的问题
C++中默认参数的效果如何通过函数重载达到?最好能举例说明。
搜索更多相关主题的帖子: 函数 效果 如何 最好 
2012-03-19 22:08
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
默认参数了就不能重载了,要不然有歧义。

比如,如果有了
void f(int a, int b = 0)
就不能
void f(int a)
了。
否则
f(5)
就不知道到底是以默认参数调用 f(5, 0) 还是调用重载的 f(5)。
2012-03-19 22:58
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
哦,你是说怎么重载达到默认参数的效果?

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

2012-03-19 23:00
迷上编程
Rank: 2
等 级:论坛游民
帖 子:140
专家分:86
注 册:2012-3-11
收藏
得分:0 
这个我刚刚在学,体会不太深!!
2012-03-20 00:01
心手2012
Rank: 2
等 级:论坛游民
帖 子:41
专家分:14
注 册:2012-3-15
收藏
得分:0 
回复 2楼 pangding
哦 大致意思有点懂了,但是能给点完整的代码吗?你写的有点看不太懂,像返回值那还有点疑问。
2012-03-20 10:13
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:2 
程序代码:
#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;
}
2012-03-20 12:05
心手2012
Rank: 2
等 级:论坛游民
帖 子:41
专家分:14
注 册:2012-3-15
收藏
得分:0 
回复 6楼 pangding
感激不尽。
2012-03-20 17:21
narutosusdo
Rank: 2
等 级:论坛游民
帖 子:45
专家分:25
注 册:2011-5-30
收藏
得分:0 
回复 2楼 pangding
难道通过参数个数不能判断调用哪个吗?
2012-03-20 22:55
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 8楼 narutosusdo
怎么判断?
2012-03-21 23:28
快速回复:C++新手关于默认参数和函数重载的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.089258 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved