gpt4 book ai didi

c++ - 使用类在 C++ 中添加年份实现

转载 作者:搜寻专家 更新时间:2023-10-30 23:58:12 25 4
gpt4 key购买 nike

我正在尝试在一个类中制作一个程序,并在每个类中添加一个日期。因此,如果日期是:2014 年 1 月 1 日,我希望它是 2015 年 2 月 2 日。

我能够计算出日期和月份的部分,但是,出于某种原因,我得到了一个奇怪的年份数字。

当我尝试调试程序时,我发现它正在打印以下内容

1/1/2014
1/1/2014
1/0/2014 // I am not sure why did it change the day to 0 but I don't care about this as I'm getting the correct result at the end
2/2/4028 // I am more concern about the 4028 ! I don't know from where did this come from
2/2/4028

这是我到目前为止所做的:

      #include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

class Date
{

public:
int day, year, monthnum;
Date(int d=1, int m2 =1, int y= 2014)
{
monthnum = m2;
day = d;
year =y;
cout << *this; // this is just for testing purposes
}


Date operator+(const Date&) const;


friend ostream& operator << (ostream& out, const Date& date)
{
out << date.monthnum << "/" << date.day << "/" << date.year <<endl;
return out;
}


};


Date Date:: operator+(const Date& date) const
{
return Date(day+date.day,monthnum+ date.monthnum ,date.year+year); // I think there is something with the "date.year + year" because when I remove this I get my initialization of the year which is 2014, however, I need it to be 2015 when I add one to it.
}




void testprogram()
{
Date date1(1), date2(1), date3(0);
date3 = date1 + date2;
cout << date3 << endl;

}


int main()
{
testprogram();
return 0;
}

最佳答案

仔细思考 Date 代表什么,以及向 Date 添加内容意味着什么。 Date 是一个特定的时间点。将它们加在一起就像将丹佛和克利夫兰的纬度和经度加在一起,并期望坐标意味着有用的东西!

您的默认参数将年份指定为 2014,因此当您添加 date1 和 date2 时,您会得到 date3.year = 2014 + 2014。我会提醒您避免使用默认参数,除非调用者几乎总是 想要默认值。它也会让你错过 date3,因为你指定了那一天=0,monthnum=1,year=2014。

关于c++ - 使用类在 C++ 中添加年份实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21489907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com