这是一个程序,用于将包含日期的字符串和具有3个整数的另一个对象(日期,月份和年份)进行转换。这个函数如何成为一个重载操作符?
class date
{
private:
char dt[9];
public:
//constructors and functions....
};
class dmy
{
private:
int day,mth,yr;
public:
//constructors..
operator date() // This is what my question is about
{
char temp[3],str[9]
itoa(day,str,10)
strcat(str,"/");
itoa(mth,temp,10);
strcat(str,temp)
strcat(str,"/");
itoa(yr,temp,10);
strcat(str,temp);
return (date(str));
}
};
int main
{
date d1;
dmy d2(17,11,94);
d1=d2;
//display d1's and d2's data
return 0;
}
我的困惑在于操作符date()部分。日期如何成为运营商?不应该= =运算符超载来执行此转换?
有时您不能重载赋值运算符或添加构造函数,例如如果'date'类型属于一个你不能修改的库,或者你只是想避免引入这个依赖。 – molbdnilo 2012-04-14 16:25:22