实验2 类和对象的定义与使用
1、实验目的
(1)掌握类与对象的定义;
(2)掌握构造函数和析构函数的实现方法;
(3)掌握静态成员函数和友元函数的使用方法;
(4)掌握类对象作为成员的使用方法。
2、实验学时:6学时
3、实验内容
(1)声明一个CPU类,在该类中包括数据成员rank(等级)、frequency(频率)、voltage(电压)。其中,rank为字符型,可以取等级’A’、’B’、’C’、’D’;frequency为整型(单位MHz),voltage为浮点型;还包括成员函数GetRank( )、GetFrequency( )、GetVoltage( )用来获取等级、频率、电压的值。SetRank( )、SetFrequency( )、SetVoltage( )用来设置等级、频率、电压的值。Run( )、Stop( )中Run( )要求输出“CPU开始运行!”,Stop( )要求输出“CPU停止运行!”。构造函数需要输出“构造一个CPU”,析构函数需要输出“析构一个CPU”。观察构造函数和析构函数的调用顺序。编写主函数使用这个类定义两个对象cpu1,cpu2,调用不同在成员函数,观察数据的赋值和输出。
#include
using namespace std;
class CPU
{
public:
char rank='A';
int frequency=1000;
float voltage=220;
CPU();
~CPU();
int GetRank();
int GetFrequency();
int GetVoltage();
int SetRank(char r);
int SetFrequency(int f);
int SetVoltage(float v);
int Run();
int Stop();
};
CPU::CPU()
{
cout<<"构造一个CPU"<
(2)声明一个Student类,在该类中包括两个数据成员name(姓名)和score(分数)、两个静态数据成员total_score(学生总分)和count(学生人数);还包括两个成员函数show()用于输出学生的姓名、成绩和account( )用于设置分数、累计学生的成绩之和、累计学生人数,一个静态成员函数sum( )用于返回学生的成绩之和,另一个静态成员函数average( )用于求全班成绩的平均值。在main( )函数中,输入某班同学的姓名和成绩,输出所有学生的姓名和成绩,并调用上述函数求出全班学生的成绩之和和平均值。
#include
#include
using namespace std;
class Student
{
private:
string name;
int score;
int math;
int english;
int computer;
int sums;
int ave;
int j=1;
static int total_score;
static int count;
public:
Student()
{
}
string getname(string name);
int show();
void account(int m,int e,int c);//设置分数、累计学生的成绩之和、累计学生人数
int outcount();
static int sum();//返回学生的成绩之和
static int average();//用于求全班成绩的平均值
};
int Student::total_score;
int Student::count;
string Student::getname(string n)
{
name=n;
return name;
}
Student::show()
{
cout<<"name:"<>i;
cout<>name;
cout<<"scanf score of math:";
cin>>math;
cout<<"scanf score of english:";
cin>>english;
cout<<"scanf score of computer:";
cin>>computer;
stu[n].getname(name);
stu[n].account(math,english,computer);
stu[n].sum() ;
stu[n].average();
n=n+1;
j++;
}
else
{
cout<<"Student information:"<
(3)声明一个Car类,在该类中包括数据成员color(颜色)、speed(速度)和成员函数Input( )用于输入color和speed,利用友元函数Output()输出Car类对象数据。
#include
#include
using namespace std;
class car
{
private:
string colar;
int speed;
public:
string input(string colar);
int input(int speed);
friend int output(car c1);
};
string car::input(string cloar)
{
return colar;
}
int car::input(int speed)
{
return speed;
}
int output(car c1)
{
cout<<"colar:"<>colar>>speed;
cout<
(4)声明日期Date类,包含数据成员year(年)、month(月)、day(日);人员Person类,包含数据成员id(编号)、name(姓名)、sex(性别)、birthday(出生日期),其中birthday定义为Date类内嵌子对象。用成员函数实现对人员信息的录入和显示。
/*声明日期Date类,
包含数据成员year(年)、month(月)、day(日);
人员Person类,包含数据成员id(编号)、name(姓名)、sex(性别)、birthday(出生日期),
其中birthday定义为Date类内嵌子对象。
用成员函数实现对人员信息的录入和显示。*/
#include
#include
using namespace std;
class Person
{
private:
string id;
string name;
string sex;
public:
Person()
{
}
Person(string i,string n,string s)
{
id=i;
name=n;
sex=s;
}
void p();
void get(string i,string n,string s);
};
void Person::get(string i,string n,string s)
{
id=i;
name=n;
sex=s;
}
void Person::p()
{
cout<<"身份证号:"<>i;
if(i)
{
cout<<"-------------------------------------"<>id;
cout<<"请输入姓名:";
cin>>name;
cout<<"请输入性别:";
cin>>sex;
cout<<"请输入出生年份:";
cin>>year;
cout<<"请输入出生月份:";
cin>>month;
cout<<"请输入出生日:";
cin>>day;
p[j].get(id,name,sex);
d[j].get(year,month,day);
j++;
}
else
{
for(i=0;i