return0;
}
9.7
#include
usingnamespacestd;
classTime
{
public:
Time(int,int,int);
inthour;
intminute;
intsec;
voidget_time();
};
Time:
:
Time(inth,intm,ints)
{
hour=h;
minute=m;
sec=s;
}
voidTime:
:
get_time()
{
cout<"<"<}
intmain()
{
Timet1(10,13,56);
int*p1=&t1.hour;
cout<<*p1<t1.get_time();
Time*p2=&t1;
p2->get_time();
void(Time:
:
*p3)();
p3=&Time:
:
get_time;
p3=&Time:
:
get_time;
(t1.*p3)();
return0;
}
9.8
#include
usingnamespacestd;
classTime
{
public:
Time(int,int,int);
inthour;
intminute;
intsec;
};
Time:
:
Time(inth,intm,ints)
{
hour=h;
minute=m;
sec=s;
}
voidfun(Time&t)
{
t.hour=18;
}
intmain()
{
Timet1(10,13,56);
fun(t1);
cout<return0;
}
9.9
#include
usingnamespacestd;
classBox
{
public:
Box(int=10,int=10,int=10);
intvolume();
private:
intheight;
intwidth;
intlength;
};
Box:
:
Box(inth,intw,intlen)
{
length=h;
width=w;
length=len;
}
intBox:
:
volume()
{
return(height*width*length);
}
intmain()
{
Boxbox1(15,30,25),box2;
cout<<"Thevolumeofbox1is"<box2=box1;
cout<<"Thevolumeofbox2is"<return0;
}
在运行的过程中出现了以下的错误,导致运行结果也出现了错误。
其运行结果是:
norelevantchangesdetected//没有相关的变化检测
9.10的程序:
#include
usingnamespacestd;
classBox
{
public:
Box(int,int);
intvolume();
staticintheight;
intwidth;
intlength;
};
Box:
:
Box(intw,intlen)
{
width=w;
length=len;
}
intBox:
:
volume()
{
return(height*width*length);
}
intBox:
:
height=10;
intmain()
{
Boxa(15,20),b(20,30);
cout<cout<cout<:
height<cout<return0;
}
运行结果:
2.分析下面的程序,写出其运行时的输出结果。
#include
usingnamespacestd;
classDate
{public:
Date(int,int,int);
Date(int,int);
Date(int);
Date();
voiddisplay();
private:
intmonth;intday;intyear;
};
Date∷Date(intm,intd,inty):
(指针调用)month(m),day(d),year(y){}//参数初始表方式初始化数据成员
Date∷Date(intm,intd):
month(m),day(d){year=2014;}
Date∷Date(intm):
month(m){day=1;year=2014;}
Date∷Date(){month=1;day=1;year=2014;}
voidDate∷display(){cout<intmain()
{Dated1(4,17,2014);
Dated2(12,30);
Dated3(10);
Dated4;
d1.display();
d2.display();
d3.display();
d4.display();
return0;
}
对此程序的分析:
在这个程序之中使用了构造函数,而在使用构造函数中使用默认函数参数是方便并且有效的。
再此题中在构造函数进行了声明,然而并未给出默认值,而是通过对函数的Date进行初始化中进行有效的赋值之外,在main函数中添加了默认值。
3.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU—Rank,定义为enumCPU—Rank{Pl=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。
程序如下,请按照要求完成空白部分的填写。
运行程序并给出运行结果
//lab5_1.cpp
#include
usingnamespacestd;
enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};//枚举类型
classCPU
{private:
CPU_Rankrank;
intfrequency;
doublevoltage;
public:
//定义一个构造函数,使之能实现main函数中各
对象的成员数据的初始化
~CPU(){cout<<"析构了一个CPU!
"<CPU_RankGetRank()const{returnrank;}
intGetFrequency()const{returnfrequency;}
floatGetVoltage()const{returnvoltage;}
voidRun(){cout<<"CPU开始运行!
"<voidStop(){cout<<"CPU停止运行!
"<};
intmain()
{CPUa1;
CPUa2(P6,300,2.8);
cout<<"Rank:
"<cout<<"Frequency:
"<cout<<"Voltage:
"<a.Run();
a.Stop();
return0;
}
#include
usingnamespacestd;
enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};
classCPU
{
private:
CPU_Rankrank;
intfrequency;
doublevoltage;
public:
CPU()
{
rank;
frequency=300;
voltage=3.8;
}
CPU_RankGetRank()const{returnrank;}
intGetFrequency()const{returnfrequency;}
floatGetVoltage()const{returnvoltage;}
voidRun(){cout<<"CPU开始运行!
"<voidStop(){cout<<"CPU停止运行!
"<};
intmain()
{CPUa1;
CPUa2(P6,300,2.8);
cout<<"Rank:
"<cout<<"Frequency:
"<cout<<"Voltage:
"<a.Run();
a.Stop();
return0;
}
【设计题目】
1.建立一个名为Student的类,该类有4个私有数据成员:
学生姓名、学号、性别、年龄;两个公有成员函数:
一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。
要求:
编写一个主函数,定义一个学生对象并以三种不同的方式(一般、参数初始化表、默认参数)实现初始化,然后调用成员函数在屏幕输出学生信息,体现出析构函数的调用。
程序对于一般情况进行初始化的程序:
#include
#include
usingnamespacestd;
classStudent
{
private:
stringname;
intnum;
charsex;
intage;
public:
Student(string,int,char,int);
voiddisplay();
};
Student:
:
Student(stringnam,intn,chars,inta)
{
name=nam;
num=n;
sex=s;
age=a;
}
voidStudent:
:
display()
{
cout<<"name"<<""<cout<<"num"<<""<cout<<"sex"<<""<cout<<"age"<<""<}
intmain()
{
Studentstud1("bai_bai",10010,'f',18);
stud1.display();
return0;
}
使用参数初始化的表的程序:
#include
#include
usingnamespacestd;
classStudent
{
public:
Student(stringnam,intn,chars,inta);
voiddisplay();
private:
stringname;
intnum;
charsex;
intage;
};
Student:
:
Student(stringnam,intn,chars,inta):
name(nam),num(n),sex(s),age(a){}
voidStudent:
:
display()
{
cout<<"name"<<""<cout<<"num"<<""<cout<<"sex"<<""<cout<<"age"<<""<}
intmain()
{
Studentstud1("白白",10010,'g',18);
stud1.display();
return0;
}
使用默认参数的程序:
#include
#include
usingnamespacestd;
classStudent
{
private:
stringname;
intnum;
charsex;
intage;
public:
Student(stringnam="bai_bai",intn=10010,chars='g',inta=18);
voiddisplay();
};
Student:
:
Student(stringnam,intn,chars,inta)
{
name=nam;
num=n;
sex=s;
age=a;
}
voidStudent:
:
display()
{
cout<<"name"<<""<cout<<"num"<<""<cout<<"sex"<<""<cout<<"age"<<""<}
intmain()
{
Studentstud1;
stud1.display();
return0;
}
分析:
对于这道题而言,函数的初始化使用了三种方法,其中包括一般,使用参数,还有就是使用函数的默认值。
对于这几种方法而言,其中不可缺少的始终是声明、定义和调用三部分。
析构函数的使用有什么好处。
2.建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。
#include
usingnamespacestd;
classStudent
{
public:
Student(intn,floats):
num(n),score(s){}
intnum;
floatscore;
};
intmain()
{
Studentstud[5]={Student(101,64aaa),Student(102,85),Student(103,86),Student(104,75),Student(105,95)};
voidmax(Student*);
Student*p=&stud[0];
max(p);
return0;
}
voidmax(Student*arr)
{
floatmax_score=arr[0].score;
intk=0;
for(inti=1;i<5;i++)