加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

函数重载没有在C中发生

发布时间:2020-12-16 06:48:21 所属栏目:百科 来源:网络整理
导读:我正在使用borland turbo C complier(4.5).这是我的代码,但我收到如下错误:’time :: add(time)’的多个声明.这里我重载了add()三次错误来自第3次重载,即“void add(time) T1)”. #includeiostream.h #includeconio.h class time { int h,m; public: void i
我正在使用borland turbo C complier(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()函数.这将解决歧义,并且还将清楚地说明哪些操作修改了对象,哪些操作返回了新对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读