函数重载没有在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()函数.这将解决歧义,并且还将清楚地说明哪些操作修改了对象,哪些操作返回了新对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |