C++实验报告六.docx
《C++实验报告六.docx》由会员分享,可在线阅读,更多相关《C++实验报告六.docx(9页珍藏版)》请在冰豆网上搜索。
![C++实验报告六.docx](https://file1.bdocx.com/fileroot1/2023-2/3/e74a66e2-fa1e-4cbe-aed8-ed0bd1fd0a59/e74a66e2-fa1e-4cbe-aed8-ed0bd1fd0a591.gif)
C++实验报告六
VC++程序设计实验报告
实验六题目:
指向类成员的指针
专业
学生姓名
班级学号
指导教师
指导单位
日期
教师评语
教师签名:
年月日
成绩评定
备注
一、实验目的
1.学习类的聚集的定义方法
2.掌握类中静态成员的使用方法
3.进一步熟悉类的操作
二、实验内容
1.验证课本上例题3.16~3.19
三、实验结果及其结果分析
1、例题3.16
(1)源程序:
#include
#include
classStudentID{
public:
StudentID(intid=0)
{
value=id;
cout<<"Assigningstudentid"<}
~StudentID()
{
cout<<"Destructingid"<}
private:
intvalue;
};
classStudent{
public:
Student(char*pName="noname",intssID=0):
id(ssID)
{
cout<<"Constructingstudent"<strncpy(name,pName,sizeof(name));
name[sizeof(name)-1]='\0';
}
~Student()
{cout<<"Deconstructingstudent"<protected:
charname[20];
StudentIDid;
};
voidmain()
{
Students("wang",9901);
Studentt("li");
}
(2)实验结果:
(3)结果分析:
程序运行成功,结果正确。
如果在类的定义中包含对象成员,则在创建类对象时先调用对象成员的构造函数,再调用类本身的构造函数。
析构函数和构造函数调用顺序正好相反。
2.例题3.17
(1)源程序:
#include
classStudent
{
public:
Student()
{cout<<"constructingstudent.\n";
semesHours=100;
gpa=3.5;
}
~Student()
{cout<<"destructingstudent.\n";}
protected:
intsemesHours;
floatgpa;
};
classTeacher
{
public:
Teacher()
{cout<<"constructingteacher.\n";}
~Teacher()
{cout<<"destructingteacher.\n";}
};
classTutorpair
{
public:
Tutorpair()
{
cout<<"constructingtutorpair.\n";
nomeeting=0;
}
~Tutorpair()
{cout<<"destructingtutorpair.\n";}
protected:
Studentstudent;
Teacherteacher;
intnomeeting;
};
voidmain()
{
Tutorpairtp;
cout<<"backmain.\n";
}
(2)实验结果:
(3)结果分析:
程序运行成功,结果正确。
如果在类的定义中包含对象成员,则在创建类对象时先调用对象成员的构造函数,再调用类本身的构造函数。
析构函数和构造函数调用顺序正好相反。
3.例题3.18
(1)源程序:
#include
classA
{
staticinti;
public:
A(){i++;}
intlist(){returni;}
};
intA:
:
i=0;
voidmain()
{
Aa1,a2,a3;
cout<}
(2)实验结果:
(3)结果分析:
程序运行成功,结果正确。
由此例可以看出,因为创建三个对象,三次使得静态数据成员加1。
4.例题3.19
(1)源程序:
#include
#include
classStudent{
public:
Student(char*pNmame="noname")
{
cout<<"creatonestudent\n";
strncpy(name,pNmame,40);
name[39]='\0';
noOfStudents++;
cout<}
~Student()
{
cout<<"destructonestudent\n";
noOfStudents--;
cout<}
staticintnumber()
{
returnnoOfStudents;
}
protected:
staticintnoOfStudents;
charname[40];
};
intStudent:
:
noOfStudents=0;
voidfn()
{
Students1;
Students2;
cout<:
number()<}
voidmain()
{
fn();
cout<:
number()<}
(2)实验结果:
(3)结果分析:
程序运行成功,结果正确。
先调用静态成员函数再累外分配空间和初始化,再调用成员函数用类名引导,析构对象,学生人数减1.
四、实验收获与体会
通过本次实验,我练习使用了类的聚集的定义方法。
通过验证书本上的四道例题,更加清楚地认识到了类中静态成员的使用方法以及对于类的进一步操作。
但类中依然有很多不熟悉的地方需要以后多加练习。