问题描述:
自定义Time类,写有double转Time和Time转double的转换构造函数,类内重载加号运算符,本来以为写Time1=double1+Time2会引发二义性,
既可以理解为将d1转换为Time类之后与t2相加(此时d1转换后为Time类符合类内运算符重载规则),也可以理解为t2转换为double型之后相加所得,转化成time后赋给t2,但是最后正常运行,想问一下我在哪里理解错误。
#include <iostream>
using namespace std;
struct Time
{
public:
Time operator+(const Time& t1)
{
return Time(hour + t1.hour, minute + t1.minute, second + t1.second);
}
Time(int h,int m,int s):hour(h),minute(m),second(s){}
Time(double d)
{
hour = d;
}
operator double()
{
return hour;
}
private:
int hour;
int minute;
int second;
};
int main()
{
Time t1(10,10,10);
Time t2(t1);
double d1 = 10, d2 = 5;
t2 = d1+t2;//既可以理解为将d1转换为Time类之后与t2相加(此时d1转换后为Time类符合类内运算符重载规则)
//也可以理解为t2转换为double型之后相加所得,转化成time后赋给t2;
return 0;
}