关于C++的赋值问题!!!!

 #include <iostream>

struct Time{
    int hour, minute;
    double second;
};

#include <iostream>
#include "increment.h"

Time increment(Time& time, double sec);
double convertToSeconds (const Time& t);
Time makeTime(double sec);
using namespace::std;
int main(Time& time)
{
    Time t;
    double seconds;
    cout<<"请输入时间"<<endl;
    cin>>t.hour>>t.minute>>t.second;
    cout<<"请输入需要增加的时间"<<endl;
    cin>>seconds;
    time = increment(t, seconds);
    return 0;
}

double convertToSeconds (const Time& t)
{
    int minutes = t.hour*60 + t.minute;
    double seconds = minutes*60 + t.second;
    return seconds;
}

Time makeTime(double sec)
{
    Time time;
    time.hour = int(sec/3600.0);
    sec -= time.hour*3600;
    time.minute = int(sec/60.0);
    sec -= time.minute*60;
    time.second = sec;
    return time;
}

Time increment(Time& time, double sec)
{
    double seconds = convertToSeconds(time) + sec;
    Time t = makeTime(seconds);
    return t;
}

这是代码,在运行的函数increment中给变量t赋值的时候是乱码,本人新手没有c币悬赏,求各位大神指导

可能是main()函数的问题。

你的main函数里面 Time& time 这个引用的time从哪儿来? 你试试把main函数的参数取消,然后在函数里面声明time试试。可能是我太菜,我是没见过main函数里面可以这么传参的。。

再用到操作符重载的时候,注意到了这个问题

如果不进行自我赋值检查。就有可能出现一种情况。那是灾难性的。举例说。你在拆房子。如果你不先看看自己是否在房子里就直接拆了。那会是怎么样呢??想想就知道。

在网上搜索了一下,转载一个现成的:http://www.lough.com.cn/cpp/thincpp2.htm

1.需要考虑的自赋值。当类包含指针......
答案就在这里:C++的自赋值问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

复制的好像有点问题。。。
而且楼主顺便也贴一下"increment.h"的代码
最好将代码放在代码标签里
图片说明