gpt4 book ai didi

c++ - C++ 中不会发生函数重载

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:25:28 25 4
gpt4 key购买 nike

我正在使用 borland turbo C++ 编译器 (4.5)。这是我的代码,但出现如下错误:'time::add(time)' 的多重声明。这里我只是将 add() 重载了 3 次错误出现在第三次重载中,即在“void add(time) t1)".

 #include<iostream.h>
#include<conio.h>
class time
{
int h,m;
public:
void input()
{
cout<<"\n Enter hour :";
cin>>h;
cout<<"\n Enter min :";
cin>>m;
}
void display()
{
cout<<"\n time is : "<<h<<":"<<m;
}
void add(time t1,time t2)
{
h=t1.h+t2.h+(t1.m+t2.m)/60;
m=(t1.m+t2.m)%60;
}
time add(time t1)
{
time t3;
t3.h=h+t1.h+(m+t1.m)/60;
t3.m=(m+t3.m)%60;
return t3;
}
void add(time t1)
{
h=h+t1.h+(m+t1.m)/60;
m=(m+t1.m)%60;
}
};
int main()
{
time t1,t2,t3;
t1.input();
t2.input();
t3.add(t1,t2);
t3.display();
t3=t2.add(t1);
t3.display();
t2.add(t1);
t2.display();
return 0;
}

最佳答案

在 C++ 中,不能只根据返回类型重载函数:

time add(time t1) {...}
void add(time t1) {...}

我建议用重载运算符 ++= 替换三个 add() 函数。这将解决歧义,也将明确哪些操作修改对象,哪些返回新对象。

关于c++ - C++ 中不会发生函数重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com