中易网

部分c++程序 加注释

答案:2  悬赏:30  
解决时间 2021-03-06 21:29
#include
using namespace std;
class Time
{private:
int hour;
int minute;
int second;
public:
Time(int hour=0,int minute=0,int second=0)
{if(hour>24||hour<0) return;
if(minute>60||minute<0) return;
if(second>60||second<0) return;
this->set_hour(hour);
this->set_minute(minute);
this->set_second(second);
}
Time(Time& time)
{hour=time.get_hour();
minute=time.get_minute();
second=time.get_second();
}
void show_time()
{cout<}
void operator =(Time time)
{this->set_hour(time.get_hour());
this->set_minute(time.get_minute());
this->set_second(time.get_second());
}
friend int sub(Time *t1,Time* t2)
{int h,m,s,r=0;
if(t1->get_hour()get_hour())
h=t1->get_hour()+24-t2->get_hour();
h=t1->get_hour()-t2->get_hour();
if(t1->get_minute()get_minute())
{h--;m=t1->get_minute()+60-t2->get_minute();}
m=t1->get_minute()-t2->get_minute();
if(t1->get_second()get_second())
{m--;s=t1->get_second()+60-t2->get_second();}
s=t1->get_second()-t2->get_second();
return h*60*60+m*60+s;

}
friend int cmp_time(Time* t1,Time* t2)
{if(t1->get_hour()==t2->get_hour()&&t1->get_minute()==
t2->get_minute()&&t1->get_second()==t2->get_second())
return SAME_TIME;
if(t1->get_hour()get_hour()) return EARLY;
if(t1->get_hour()>t2->get_hour()) return LATE;
else
{if(t1->get_minute()get_minute()) return EARLY;
if(t1->get_minute()>t2->get_minute()) return LATE;
else
{if(t1->get_second()get_second()) return EARLY;
if(t1->get_second()>t2->get_second()) return LATE;
}
}
最佳答案
#include
using namespace std;
class Time // time时间类
{
private: //时间变量时分秒
int hour;
int minute;
int second;
public:
Time(int hour=0,int minute=0,int second=0) //构造函数,通过传进参数构造类
{
if (hour>24||hour<0) return; //时间不能超过24不能小于0
if (minute>60||minute<0) return; //分钟秒钟不能大于60小于0
if (second>60||second<0) return;
this->set_hour(hour); //调用类中定义函数设置时间
this->set_minute(minute);
this->set_second(second);
}
Time(Time& time) //通过传进一个Time类参数进行构造
{
hour=time.get_hour();
minute=time.get_minute();
second=time.get_second();
}
void show_time() //进行时间的显示输出
{
cout< }
void operator =(Time time) //重载=用来判断时间是否相等
{
this->set_hour(time.get_hour());
this->set_minute(time.get_minute());
this->set_second(time.get_second());
}
friend int sub(Time *t1,Time* t2) //定义友元函数用来计算两个两个时间相差多少秒
{
int h,m,s,r=0;
if (t1->get_hour()get_hour())
h=t1->get_hour()+24-t2->get_hour();
h=t1->get_hour()-t2->get_hour();
if (t1->get_minute()get_minute())
{h--;m=t1->get_minute()+60-t2->get_minute();}
m=t1->get_minute()-t2->get_minute();
if (t1->get_second()get_second())
{m--;s=t1->get_second()+60-t2->get_second();}
s=t1->get_second()-t2->get_second();
return h*60*60+m*60+s;

}
friend int cmp_time(Time* t1,Time* t2) //比较两个时间大小,判断是同时,还是早了晚了。
{
if (t1->get_hour()==t2->get_hour()&&t1->get_minute()==
t2->get_minute()&&t1->get_second()==t2->get_second())
return SAME_TIME;
if (t1->get_hour()get_hour()) return EARLY;
if (t1->get_hour()>t2->get_hour()) return LATE;
else
{
if (t1->get_minute()get_minute()) return EARLY;
if (t1->get_minute()>t2->get_minute()) return LATE;
else
{
if (t1->get_second()get_second()) return EARLY;
if (t1->get_second()>t2->get_second()) return LATE;
}
}
全部回答
声明:b类是a类的派生类。关于派生类和基类在声明方式、调用规则的解释如下: 1、类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或子类。 2、派生类的声明: class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n { 派生类成员声明; }; 3、一个派生类可以同时有多个基类,这种情况称为多重继承,派生类只有一个基类,称为单继承。直接派生,间接派生。 4、继承方式规定了如何访问基类继承的成员。继承方式有public, private, protected。如果不显示给出继承方式,默认为private继承。继承方式指定了派生类成员以及类外对象对于从基类继承来的成员的访问权限。 5、派生类继承基类中除构造和析构函数以外的所有成员。 6、派生类生成: 吸收基类成员(除构造析构函数以外的所有成员); 改造基类成员(根据继承方式调整基类成员的访问,函数在子类中的覆盖,以及虚函数在子类中的覆盖); 添加新的成员; 7、公有继承 当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中不变,而基类的私有成员不可访问。即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有成员和保护成员。派生类的其他成员可以直接访问它们。无论派生类的成员还是派生类的对象都无法访问基类的私有成员。 8、私有继承 当类的继承方式为私有继承时,基类中的公有成员和保护成员都以私有成员身份出现在派生类中,而基类的私有成员在派生类中不可访问。基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问它们,但是在类外部通过派生类的对象无法访问。无论是派生类的成员还是通过派生类的对象,都无法访问从基类继承的私有成员。通过多次私有继承后,对于基类的成员都会成为不可访问。因此私有继承比较少用。 9、保护继承 保护继承中,基类的公有成员和私有成员都以保护成员的身份出现在派生类中,而基类的私有成员不可访问。派生类的其他成员可以直接访问从基类继承来的公有和保护成员,但是类外部通过派生类的对象无法访问它们,无论派生类的成员还是派生类的对象,都无法访问基类的私有成员。 二、派生类的构造函数和析构函数 1、派生类中由基类继承而来的成员的初始化工作还是由基类的构造函数完成,然后派生类中新增的成员在派生类的构造函数中初始化。 2、派生类构造函数的语法: 派生类名::派生类名(参数总表):基类名1(参数表1),基类名(参数名2)....基类名n(参数名n),内嵌子对象1(参数表1),内嵌子对象2(参数表2)....内嵌子对象n(参数表n) { 派生类新增成员的初始化语句; } 注:构造函数的初始化顺序并不以上面的顺序进行,而是根据声明的顺序初始化。 3、如果基类中没有不带参数的构造函数,那么在派生类的构造函数中必须调用基类构造函数,以初始化基类成员。 4、派生类构造函数执行的次序: 调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左到右); 调用内嵌成员对象的构造函数,调用顺序按照它们在类中声明的顺序; 派生类的构造函数体中的内容。 回到题目当中: 首先,通过建立b类的对象b,通过调用构造函数将2这个参数传递给对象b的私有数据x,所以b.x=2;然后调用a类的构造函数(公有继承,只能调用a类的pubulic数据和函数),将i+10作为参数赋值给a类虚拟对象的私有数据x,此时x等于12。 然后调用对象b的输出函数。首先执行dispa(),这个函数用来输入a类的虚拟对象的私有数据x,输出“12,” 之后调用b对象的输出语句cout将对象b的私有数据输出,“2”。然后程序结束。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
新天地家具批发商场地址在哪,我要去那里办事
临沂哪里有卖活性炭的?
s690Q相当于国内什么材质
如何将网上扫描的文件复制下来?
久源房地产土地估价有限公司地址在什么地方,
镇兴村地址好找么,我有些事要过去
为啥叫"调羮"?
石材背景墙两侧方框内装饰材料
楼道灯红外线开关好还是声控的好
贵族鞋城运营这个地址在什么地方,我要处理点
查IP:58.19.*.*的具体街道谢谢
2005年阳历是12月9号的阴历生日是几月几日
关于磷的含氧酸的酸性问题
《终结者2:审判日》从哪里下载?
百度与谷歌,区别在哪里? 都各自分别涉及哪
推荐资讯
梦见路边引路的白蜡烛被风吹断
在Rt三角形ABC中,角C=90度。已知a=5,c=9,
卢氏县是哪个省的?
鸿福车饰地址有知道的么?有点事想过去
我的户口在安阳林州是非农朋友的户口在开封杞
远程网络监控不显示有几种原因
汇编语言如何求2的32次方以内所有素数?
放内衣用塑料好还是牛津布盒子好
您好 我也想考上海交大高金的研究生 希望能得
今天星期六别人都不加班,打电话给我说他一个
重口味麻辣餐馆地址有知道的么?有点事想过去
宁波麦克英孚刚毕业本科员工待遇怎么样?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?