【题目】07年C++复试笔试真题
定义一个处理日期的类TDate,它有3个私有数据成员:Month,Day,Year和若干共有成员函数,实现如下要求[附条件解读]
①构造函数重载→创建无参构造函数+有参构造函数
②成员函数设置缺省参数→与④一同可用set()在类中实现
③定义一个友元函数来打印日期→friend void print(TDate &date) 【注意友元函数的参数类型及个数】
④定义一个非静态成员函数设置日期→与②一同可用set()在类中实现
⑤可以用不同的构造函数来创建不同对象→可考虑main中创建无参对象+带参对象
【代码】
//定义一个处理日期的类TDate,它有3个私有数据成员:Month,Day,Year和若干共有成员函数,实现如下要求
//1构造函数重载 2成员函数设置缺省参数 3定义一个友元函数来打印日期
//4定义一个非静态成员函数设置日期 5用不同的构造函数来创建不同对象
#include "bits/stdc++.h"
#include<iostream>
using namespace std;
class TDate{public:TDate(){ //无参构造 time_t now=time(NULL);tm *Itm=localtime(&now);Year=1900+Itm->tm_year;Month=1+Itm->tm_mon;Day=Itm->tm_mday; }TDate(int year,int month,int day){ //带参构造,满足1构造函数重载 Year=year;Month=month;Day=day;} void settime(int year=2019,int month=1,int day=1); //满足2成员函数设置缺省参数与4定义非静态成员函数设置日期 friend void print(TDate &date); //声明print是友元函数,用来打印日期,满足3定义一个友元函数来打印日期 private:int Year;int Month;int Day;
};
void TDate::settime(int year,int month,int day){Year=year;Month=month;Day=day;
}
void print(TDate &date){ //友元函数print定义在类外,满足3定义友元函数来打印日期 cout<<"year:"<<date.Year<<endl; cout<<"month:"<<date.Month<<endl; cout<<"day."<<date.Day<<endl;
}
int main(){TDate t1; //创建对象t1,调无参构造 TDate t2(2019,1,10); //创建对象t2,调有参构造.满足5用不同的构造函数来创建不同对象 print(t1); //友元函数print打印t1的时间 cout<<"-----"<<endl;print(t2); //友元函数print打印t2的时间t2.settime(); //不提供参数,讲自动调用默认参数 print(t2); cout<<"-----"<<endl;t2.settime(2019,3,10); //提供参数,会以提供的参数作为新的参数 print(t2);
// system("pause");return 0;
}