类型转换构造函数求解
#include<iostream>
using namespace std;
class Date
{
public:
Date(int _year = 1900, int _month = 1, int _day = 1)
{
year = _year;
month = _month;
day = _day;
}
void Show()
{
cout << year <<"/"<< month <<"/"<<day << endl;
}
int Getyear()
{
return year;
}
int Getmonth()
{
return month;
}
int Getday()
{
return day;
}
void setyear(int _year)
{
year = _year;
}
void setmonth(int _month)
{
month = _month;
}
void setday(int _day)
{
day = _day;
}
private:
int year,month,day;
};
class Time
{
public:
Time(int _hour = 0, int _minute = 0, int _second = 0)
{
hour= _hour;
minute = _minute;
second = _second;
}
Time(int x)//转换构造函数
{
minute = x/ 60;
hour = x / 60;
second = x - hour * 60 * 60 - minute * 60;
}
void Show()
{
cout << hour << ":" << minute << ":" << second << endl;
}
int Gethour()
{
return hour;
}
int Getminute()
{
return minute;
}
int Getsecond()
{
return second;
}
void sethour(int _hour)
{
hour = _hour;
}
void setminute(int _minute)
{
minute = _minute;
}
void setsecond(int _second)
{
second = _second;
}
private:
int hour, minute, second;
};
class DateTime
{
public:
DateTime(Date _d, Time _t)//形参为类的构造函数
{
d = _d;
t = _t;
}
DateTime(int year=1900,int month=1,int day=1,int hour=0,int minute=0,int second=0)
{
d.setyear(year);
d.setmonth(month);
d.setday(day);
t.sethour(hour);
t.setminute(minute);
t.setsecond(second);
}
void Show()
{
cout << d.Getyear() << "/" << d.Getmonth()<< "/" << d.Getday()<< " " << t.Gethour()<< ":" << t.Getminute()<< ":" << t.Getsecond()<<endl;
}
void AddSecond();
private:
Date d;
Time t;
};
void DateTime::AddSecond()
{
int year, month, day, hour, minute, second;
year = d.Getyear();
month = d.Getmonth();
day = d.Getday();
hour = t.Gethour();
minute = t.Getminute();
second = t.Getsecond();
second++;
if (second == 60) //时间
{
second = 0;
minute++;
if (minute == 60)
{
minute = 0;
hour++;
if (hour == 24)
{
hour = 0;
day++;
}
}
}
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) //每月有31天的
{
if (day == 31 + 1)
{
day = 1;
month++;
}
}
if (month == 4 || month == 6 || month == 9 || month == 11)//每月有30天的
{
if (day == 30 + 1)
{
day = 1;
month++;
}
}
if (month == 2)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) //闰年
{
if (day == 29 + 1)
{
day = 1;
month++;
}
}
else //平年
{
if (day == 28 + 1)
{
day = 1;
month++;
}
}
}
if (month == 13)
{
month = 1;
}
d.setyear(year);
d.setmonth(month);
d.setday(day);
t.sethour(hour);
t.setminute(minute);
t.setsecond(second);
}
void main()
{
Date d(2016, 2, 29);
d.Show(); //显示:2016/02/29
Time t(23, 59, 59);
t.Show(); //显示:23:59:59
DateTime dt1(d, t);
dt1.Show(); //显示:2016/02/29 23:59:59
dt1.AddSecond(); //dt1的值改为增加1秒后的日期时间
dt1.Show(); //显示:2016/03/01 00:00:00
DateTime dt2; //默认构造函数
dt2.Show(); //显示:1900/01/01 00:00:00
DateTime dt3(1998, 3, 18, 13, 30, 0); //带参数构造函数
dt3.Show(); //显示:1998/03/18 13:30:00
t=1234; //类型转换,t得到一天中第1234秒的时间
t.Show(); //显示: 00:20:34
}其他功能正常,请问为什么最后的t=1234的类型转就不行
...全文
相关推荐
c++类模板中的友元声明及模板构造函数
这里讲述的是c++类模板中的友元声明及模板构造函数的说明,具体操作请看面的内容 类模板的友元声明: 当授予给定模板的所有实例的访问权的时候,在作用域中不需要存在该类模板或函数模板的声明。想要限制对特定实例化的友元关系时,必须在可以用于友元声明之前声明类或函数。 template <class> class test { template <class> friend ostream& operator<< (ostream Ⓢ, const test<U> &obj); //友元的所有实例均具有访问权 … }; class te
FLEX强制类型转换
FLEX强制类型转换FLEX强制类型转换FLEX强制类型转换FLEX强制类型转换FLEX强制类型转换
C++向上类型转换和拷贝构造
C++编程思想的第十四章,代码,本人亲测通过后才上传的 技术是需要不断进行锤炼的,每天进步一点点,快乐每一天
C++ explicit构造函数实例解析
主要介绍了C++ explicit构造函数,需要的朋友可以参考下
浅谈C++ Explicit Constructors(显式构造函数)
下面小编就为大家带来一篇浅谈C++ Explicit Constructors(显式构造函数)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧


