目录
Data类
声明和定义分离的一些问题
声明里面我们不带缺省参数,定义我们给缺省参数,如下面两段代码:
Data.h
#pragma once
#include<iostream>
using namespace std;
class Data
{
public:
Data(int year,int month,int day);
private:
int _year;
int _month;
int _day;
};
Data.cpp
#include"Data.h"
Data::Data(int year=1 , int month=1 , int day=1 )
{
_year = year;
_month = month;
_day = day;
}
现在我们在main函数调用:
d1没报错,d2报错了:
这是因为我们main函数那个文件包的是.h文件,声明我们没有给缺省参数,声明就好比一种承诺,
没给参数,我们d2没有默认参数就过不了。
我们给个默认参数看看:
#pragma once
#include<iostream>
using namespace std;
class Data
{
public:
Data(int year = 1, int month = 1, int day = 1);
private:
int _year;
int _month;
int _day;
};
声明和定义不能同时给默认参数,我们把定义的默认参数去了就可以了。
OK,我们写个print函数就可以把日期打印出来看看了:
Data.cpp
void Data:: print()
{
cout << _year << "年" << _month << "月" << _day << "日" << endl;
}
我们发现上面这段日期是有问题的,有点的是闰年,有的是13月,是一些不合法日期,所以我们要加日期有效判断。
日期判断
引用上一篇文章写的:
int Getmonth(int year,int month)
{
int GetArry[13] = {0, 31,28,30,31,30,31,30,31,30,31,30,31 };
if (month==2&&(month % 4 == 0 && month % 10 == 0 || month % 400 != 0))
{
return 29;
}
return GetArry[month];
}