| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 671 人关注过本帖
标题:关于函数重载
只看楼主 加入收藏
boris250
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-11
收藏
 问题点数:0 回复次数:9 
关于函数重载

利用函数重载时,编写如下程序:
#include <iostream>
using namespace std;
int test(int a,int b);
float test(float a,float b);
int test(int,int,int);
int main()
{
cout << test(1,2) << endl;
cout<< test(2.1f,3.14f) << endl;
cout<<test(1,2,4)<<endl;
return 0;
}

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

float test(float a,float b)
{
return a+b;
}
int test(int a,int b,int c)
{
return a+b+c;
}同时遇到一个问题,如果函数的变量要在执行时输入,该如何定义变量,尤其是输入的参数个数不同时。

[此贴子已经被作者于2007-10-2 8:37:32编辑过]

搜索更多相关主题的帖子: int test float 函数 return 
2007-10-01 23:05
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
用命令解析的形式获取参数

try new catch
2007-10-02 16:28
mingreign
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2007-9-15
收藏
得分:0 
回复:(Arcticanimal)用命令解析的形式获取参数
       可以说的详细一点吗?谢谢.
2007-10-02 18:19
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
实在看不懂你的问题。。。

偶学编程,也许本身就是一个错。。。
2007-10-02 19:02
编程高手
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-10-2
收藏
得分:0 
不明白LZ问什么
2007-10-03 02:45
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 

只需要在调用函数前将值输入各变量即可

cin>>a;cin>>b;
//然后
test(a,b);
//其余相同


女侠,约吗?
2007-10-03 09:14
csmenglei951
Rank: 1
等 级:新手上路
威 望:1
帖 子:77
专家分:0
注 册:2007-9-30
收藏
得分:0 

你输入实参的个数一定要和函数定义时的参数一样啊
问大家一个问题啊就这个帖子
他前面已经申明了float test(float a,float b)两个形参是float,后面为什么还这样表示test(2.1f,3.14f)而不表示成test(2.1,3.14),而我改之后又提示错误"error C2668: 'test' : ambiguous call to overloaded function"
高手给我讲讲,不胜感激

[此贴子已经被作者于2007-10-3 10:36:51编辑过]

2007-10-03 10:18
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
回复:(mingreign)回复:(Arcticanimal)用命令解析...
LZ的意思大概是事先并不知道会调用到那个函数重载的版本, 由于这几个重载的参数个数和类型都不同, 所以在输入参数时就遇到了问题.
比如说用户想计算 test(1, 2, 3) 那么就要输入3个int参数, 但是在编码时并不能确定这个需求. 因此编码时就不能定义3个int然后要用户输入, 必须由程序动态的判断用户输入了几个参数, 分别是什么类型

int main(int argc, char* arv[])
{
int NumberOfArgs = argc - 1;
switch( NumberOfArgs )
{
case 2:
if( strfind(argv[1] , '.') > 0 ) // No such function is defined in string.h , DIY .
// ... // return the index value of the specified character in the string if character is found , otherwise return -1.
else
// ...
break;
case 3:
cout<<test( atoi(argv[1], atoi(arv[2]) , atoi(argv[3]))<<endl;
break;
}
return 0;
}

try new catch
2007-10-03 12:01
body202
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-4-21
收藏
得分:0 

刚刚变成了论坛游民很兴奋
回答7楼:
这是因为VC的编译器默认小数为double型,而double型是不能转为float型的
要消除这个错误必须采用“强制解释”,即float a=3.14f; 加上一个f就可以了

2007-10-03 12:16
csmenglei951
Rank: 1
等 级:新手上路
威 望:1
帖 子:77
专家分:0
注 册:2007-9-30
收藏
得分:0 
谢谢9楼

2007-10-03 13:02
快速回复:关于函数重载
数据加载中...
 
   



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

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