重载+操作符
Overloading + Operator C++
作为开场白,这是我的家庭作业,我不是在寻找答案,只是一个小小的方向,因为我不能去实验室导师那里寻求帮助。我的问题是,我已经得到了预定义的类声明,我不能改变。我有两个时间对象,我需要添加它们来等于第三个时间对象。
time3 = time2 + time1;
我的重载函数是这样的
Time Time :: operator + (const Time time2)
{
Time::addSeconds(time1.second);
Time::addMinutes(time1.minute);
Time::addHours(time1.hour); //changes hrs and days
return *this;
};
所以我添加了time1,在我的添加函数中,我使用*this操作符来赋值,它将time2变成time1等于什么。所以这行不通。如果我可以改变我的类定义,我知道如何做到这一点,但是我不能。我想我的意图是*this指的是time3,但它指的是方程的左边。
我怎么能使结果等于time3在我的添加函数不改变我的类的结构?
我找不到任何显示处理这种情况的正确方法的资源,但是如果你有的话,我很乐意通读一遍。
在本例中,这是一个二元操作符,对两个对象一视同仁。这应该作为一个自由函数来实现。该结构看起来像这样:
Time operator + (const Time &time1, const Time &time2)
{
Time t3 = time1;
t3.addSeconds(time2.second);
t3.addMinutes(time2.minute);
t3.addHours(time2.hour);
//don't know how these functions work...
return t3;
};