1. //???の部分はコンストラクタですか?コピーコンストラクタですか?教えていただきたいです。
  2. また、前の日と次の日を「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();
}