重载+操作符

Overloading + Operator C++

本文关键字:操作符 重载      更新时间:2023-10-16

作为开场白,这是我的家庭作业,我不是在寻找答案,只是一个小小的方向,因为我不能去实验室导师那里寻求帮助。我的问题是,我已经得到了预定义的类声明,我不能改变。我有两个时间对象,我需要添加它们来等于第三个时间对象。

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;
};