//???
の部分はコンストラクタですか?コピーコンストラクタですか?教えていただきたいです。
- また、前の日と次の日を「void operator++();//次の日」、「void operator--();//前の日」で実装しようとすると
//???
の部分はどうしたらわかりやすいコードを書くことが出来るか教えていただきたいです。
#pragma once
#ifndef ___IntArray
#define ___IntArray
#include <iostream>
#include <ostream>
#include <sstream>
#include <time.h>
using namespace std;
#define LEAP 29
#define NOT_LEAP 28
class Date {
private: //うるう年は29 そうじゃない場合は28
/* 0 1 2 3 4 5 6 7 8 9 10 11 12*/
int mon[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int year;
int month;
int day;
public:
Date()//デフォルトコンストラクタ
{
/*現在時刻で初期化*/
time_t timer;
struct tm local_time;
timer = time(NULL);
localtime_s(&local_time, &timer);
year = local_time.tm_year + 100;
month = local_time.tm_mon + 1;
day = local_time.tm_yday;
}
Date(int y, int m, int d)//???
{
year = y;
month = m;
day = d;
/*月が12以上の時12月31日に変更*/
if (month > 12)
{
month = 12;
day = 31;
}
/*日数がその月の最大日数を超えてる時にうるう年の2月でうるう年かどうかを判定して数字を代入*/
if (day > mon[month] && month == 2) {
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
{
day = LEAP;
}
else
{
day = NOT_LEAP;
}
}
else
{
if (day > mon[month]) {
day = mon[month];//2月じゃないけど日数が超えてる場合にその月の最大日数を代入
}
}
}
string to_string()const
{
ostringstream s;
s << year<<"/" << month << "/" << day<<"\n";
return s.str();
}
};
inline ostream& operator<<(ostream& s, const Date& x)
{
return s << x.to_string();
}