| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2159 人关注过本帖
标题:函数重载——求问这个程序哪里出错了?
只看楼主 加入收藏
蛤蟆001
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2016-9-2
结帖率:70%
收藏
 问题点数:0 回复次数:8 
函数重载——求问这个程序哪里出错了?
include <iostream.h>
int abs (int x)
{
    return x>0 ?x:-x;
}
double abs(double x)
{
    return x>0 ?x:-x;
}
void main ()
{
    cout <<"-10的绝对值是:"<<abs(-10) <<endl;
    cout << "-123.45的绝对值是:"<< abs(-123.45) <<endl;
}
搜索更多相关主题的帖子: include double return 
2016-09-08 09:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
『哪里出错了?』应该是你告诉别人。
比如“return x>0 ?x:-x; 这一句编译失败,报错信息为:…………。请问怎么修改”
这样别人就能看出你想解决什么问题,从而告诉你应该将中文?改为英文?

BTW:换本符合C++标准的书吧,换个符合C++标准的编译器吧。
include <iostream.h> 这个iostream.h头,在上个世纪就已经被标准废弃了
void main () 从古至今,main的返回类型都必须是int
2016-09-08 10:18
starlz
Rank: 2
等 级:论坛游民
帖 子:15
专家分:27
注 册:2016-10-22
收藏
得分:0 
//这个怎么能重载呢?换个名字好了?abs不是c++的关键字吧,菜鸟见笑。。难道是括号的原因?,都不是。
#include<iostream>
using namespace std;
int jdz(int x)
{
    return x > 0 ? x : (-x);
}
double jdz(double x)
{
    return x > 0 ? x : (-x);
}
void main()
{
    cout << jdz(-1.234) << endl;
    cout << jdz(-2);

}


[此贴子已经被作者于2016-10-24 22:28编辑过]

2016-10-24 22:25
starlz
Rank: 2
等 级:论坛游民
帖 子:15
专家分:27
注 册:2016-10-22
收藏
得分:0 
来个大神解释一下为什么啊?改个名字就可以重载,用abs就不能重载,我重新试过了。改成abs就重载不了。。
2016-10-24 22:38
starlz
Rank: 2
等 级:论坛游民
帖 子:15
专家分:27
注 册:2016-10-22
收藏
得分:0 
继续寻觅大神。。我很是困惑,查了一下abs也不是关键字啊。为什么用它就不行,改个名字就能重载??期待大神出现
2016-10-25 08:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
以下是引用starlz在2016-10-25 08:06:31的发言:

继续寻觅大神。。我很是困惑,查了一下abs也不是关键字啊。为什么用它就不行,改个名字就能重载??期待大神出现
别再浪费bbs空间了
任何语法错误,编译器都会告诉你
贴出你编译器给出的错误信息就行了
2016-10-25 08:10
starlz
Rank: 2
等 级:论坛游民
帖 子:15
专家分:27
注 册:2016-10-22
收藏
得分:0 
//错误    1    error C2084: 函数“double abs(double) throw()”已有主体    c:\users\star.lz\documents\visual studio //2013\projects\consoleapplication28\consoleapplication28\源.cpp    8    1    ConsoleApplication28
//错误    2    error C2264: “abs”: 函数定义或声明中有错误;未调用函数    c:\users\star.lz\documents\visual studio //2013\projects\consoleapplication28\consoleapplication28\源.cpp    13    1    ConsoleApplication28
#include<iostream>
using namespace std;
int abs(int x)
{
    return x > 0 ? x : (-x);
}
double abs(double x)
{
    return x > 0 ? x : (-x);
}
void main()
{
    cout << abs(-1.234) << endl;
    cout << abs(-2);

}
2016-10-25 09:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
以下是引用starlz在2016-10-25 09:32:13的发言:

函数“double abs(double) throw()”已有主体
这个信息提示已经很直白了,也就是在你的这个烂编译器上,#include <iostream.h> 之后就已经有了 abs 的函数定义了,然后你再定义一个相同的,那当然报错了。
2016-10-25 09:39
林家的姑娘
Rank: 1
等 级:新手上路
帖 子:9
专家分:5
注 册:2016-10-16
收藏
得分:0 
回复 楼主 蛤蟆001
你的第一个“?”用了中文的吧?两个问号明显不一样
2016-10-25 16:03
快速回复:函数重载——求问这个程序哪里出错了?
数据加载中...
 
   



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

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