请帮忙解释一下一个程序

来源:百度知道 编辑:UC知道 时间:2024/05/30 22:25:16
请给我解释一下钱能的<C++程序设计>的一个类的几个成员函数是什么意思好吗?
#include"date.h"
#include<iostream>
#include<iomanip>
using namespace std;

const int Date::tians[]={0,31,59,89,120,150,181,212,242,273,303,334};

Date::Date(const string& s)
{
year=atoi(s.substr(0,4).c_str());
month=atoi(s.substr(5,2).c_str());
day=atoi(s.substr(8,2).c_str());
}

void Date::i2ymd(int absDay)
{
absDay=absDay>0 && absDay<36500 ? absDay:1;
int n=absDay;
for(year=1,n>isleapYear()+365;n-=isLeapYear()+365,Year++;
for(month=1;(month<12&& >(isLeapYear() && month>2)++tians(month);
month++;
day=n-(isLeapYear()&& month>2)-tians[month-1];

}

int Date::ymd2i()const
{
int absDay=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400;
return absDay+=tians[month-1]+(isLeapYear()&&month>2)+day;
}

代码中有几个地方抄错和抄漏符号(比如括号),在此就不纠正了,只从代码表面大概提一下几个函数的作用:

const int Date::tians[]
类的静态(static const)常量,也就是通常说的类全局常量。
这里是一个整型数组,保存一年12个月每个月对应的年头天数(基数)。

Date::Date(const string& s)
构造函数,从string对象s中分析出年月日信息,保存在类成员变量中。
s被声明为const,表明他在该方法内部不可被修改。

void Date::i2ymd(int absDay)
将整型的“天数”转化为年月日表示,信息存在类成员变量中。
这里的absDay是从公元元年的1月1日开始计算的天数。

int Date::ymd2i()const
将类成员变量中存放的日期转化为整型的天数。该函数被声明为const,表示它不改变类成员变量的值。

void print(ostream& o)const
将类成员变量信息格式化并输出到流o中,实际调用的时候,o多半是cout或者是某个输出文件流。

ostream& operate<<(ostream& o,const Date& d)
重载流定向操作符“<<”,使Date对象可以直接在流对象后输出。
形式为:
Date dt; // 然后进行赋值,代码省略
cout << dt; // 调用重载后的“<<”