部分c++程序 加注释
答案:2 悬赏:30
解决时间 2021-03-06 21:29
- 提问者网友:伪情浪人
- 2021-03-06 04:57
#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;
}
}
最佳答案
- 二级知识专家网友:狠傷凤凰
- 2021-03-06 05:57
#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;
}
}
全部回答
- 1楼网友:绝望伪装
- 2021-03-06 06:14
声明: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”。然后程序结束。
我要举报
大家都在看
推荐资讯