实验9类和对象 【实验目的】 1掌握类的定义方法,正确理解类与结构体的异同 2.学习对象的说明和使用方法 3.掌握定义构造函数、重载构造函数的方法 4.理解构造函数的作用 5.掌握定义析构函数的方法,理解析构函数的作用 6.加深理解拷贝构造函数的作用和用途 【实验内容】 1.定义一个三角形类。该类的私有成员是三个边长;公有成员函数用于计算三角形 的面积。设计相应的程序测试该类的功能,并将类的定义作为接口,用多文件结 构实现之。 ∥ Triangle. h内容 class triangle double a.b.c. ublic: void set(double ll, double 12, double 3) void areao ∥ Triangle. cpp内容 #include <iostream. h> #include <math. h> #include Triangle. h void Triangle: set(double ll, double n2, double 13) l3; id Triangle doubl cout<<"Area is: "<<sqrt(s(s-a)* (s-b)"(s-c))<<endl; s.set(3.0,4.0,60); 2定义一个描述学生通讯录的类 数据成员包括:姓名、学校、电话号码和邮编 公有成员函数包括:①一个 Print()函数输出所有的数据成员 ②用函数 Init(char*, char *.char+,char*)来初始化各成员 ③用函数 Free Space()释放数据成员占用的空间 并设计相应的程序测试该类的功能。 #include <iostream. h> #include <string. h
实验 9 类和对象 【实验目的】 1 掌握类的定义方法,正确理解类与结构体的异同 2.学习对象的说明和使用方法 3.掌握定义构造函数、重载构造函数的方法 4.理解构造函数的作用 5.掌握定义析构函数的方法,理解析构函数的作用 6.加深理解拷贝构造函数的作用和用途 【实验内容】 ⒈定义一个三角形类。该类的私有成员是三个边长;公有成员函数用于计算三角形 的面积。设计相应的程序测试该类的功能,并将类的定义作为接口,用多文件结 构实现之。 //Triangle.h 内容 class Triangle {private: double a,b,c; public: void set(double l1,double l2,double l3); void area(); }; //Triangle.cpp 内容 #include <iostream.h> #include <math.h> #include "Triangle.h " void Triangle::set(double l1,double l2,double l3) { a=l1;b=l2;c=l3;} void Triangle::area() { double s; s=(a+b+c)/2; cout<<"Area is:"<<sqrt(s*(s-a)*(s-b)*(s-c))<<endl;} void main() { Triangle S; S.set(3.0,4.0,6.0); S.area(); } ⒉定义一个描述学生通讯录的类: 数据成员包括:姓名、学校、电话号码和邮编; 公有成员函数包括:①一个 Print( ) 函数输出所有的数据成员 ②用函数 Init(char *,char *,char *,char *)来初始化各成员 ③用函数 FreeSpace( )释放数据成员占用的空间 并设计相应的程序测试该类的功能。 #include <iostream.h> #include <string.h>
class COMMU i char *pName; 姓名,数据成员为私有的 char * sChool ∥单位 ∥电话号码 char Box[10; ∥邮编 public: Print(void) 输出数据成员 {cout<<"姓名:"< pName<<"t; cout<"单位:"< sChool<"; cout<<"电话号码:<<pNum<<"t cout<"邮编:"<<Box<<"n';} void Init(char char", char char"); void FreeSpace(void); /释放数据成员占用的空间 }; void COMMU: Init(char *name, char *unit, char *num, char *b) (pName= new char [strlen(name)+1; p School= new char [strlen(unit)+1; strcpy(sChool, unit); Num=new char strlen(num+l; strcpy (pNum, num); strcpy (Box, b): 1 void COMMU: Free Space(void) fif(pName) delete pName; if(school) delete d school; delete pNum; 3 void main(void & COMMU cl, c2; cLIm'张建国”,"南京大学","025-85595638,"210024"); c2lni'李国强","南京工业大学";"02585432455”,"210015"); cl Print0; c2. Print0; c2 FreeSpace cl FreeSpace 2将上题的成员函数Init改为构造函数,且将成员函数 FreeSpace改为析构函数 增加一个缺省的构造函数,使指针 pName, sChool和pNum的初值为0,使Box 包含空字符串。 #include <iostream. h> #include <string. h class COMMu
class COMMU { char *pName; //姓名,数据成员为私有的 char *pSchool; //单位 char *pNum; //电话号码 char Box[10]; //邮编 public: void Print(void) //输出数据成员 {cout<<"姓名:"<<pName<<'\t'; cout<<"单位:"<<pSchool<<'\t'; cout<<"电话号码:"<<pNum<<'\t'; cout<<"邮编:"<<Box<<'\n';} void Init(char *,char *,char *,char *); void FreeSpace(void); //释放数据成员占用的空间 }; void COMMU::Init(char *name,char *unit,char *num,char *b) {pName = new char [strlen(name)+1]; strcpy(pName,name); pSchool = new char [strlen(unit)+1]; strcpy(pSchool,unit); pNum = new char [strlen(num)+1]; strcpy(pNum,num); strcpy(Box,b);} void COMMU::FreeSpace(void) {if(pName) delete [] pName; if(pSchool) delete [] pSchool; if(pNum) delete [] pNum;} void main(void ) { COMMU c1,c2; c1.Init("张建国","南京大学","025-85595638","210024"); c2.Init("李国强","南京工业大学","025-85432455","210015"); c1.Print(); c2.Print(); c2.FreeSpace(); c1.FreeSpace(); } ⒉将上题的成员函数 Init 改为构造函数,且将成员函数 FreeSpace 改为析构函数。 增加一个缺省的构造函数,使指针 pName,pSchool 和 pNum 的初值为 0,使 Box 包含空字符串。 #include <iostream.h> #include <string.h> class COMMU
i char *pName /姓名,数据成员为私有的 char school;∥单位 char pNum ∥/电话号码 char Box[10;∥邮编 ablin void Print((void)/输出数据成员 {cout<<"姓名:"< pName<"; cout<<"单位:"< sChool<"t; cout<<"电话号码:<pNum<"; cout<<"邮编:<<Box<<"n';} COMMU(char * char * char * char ") COMMUO -COMMU0 COMMU∷ COMMUO ∥-省的构造函数 SChool Box|0]=0; COMMU: COMMU(char * name, char *unit, char *num, char * b) {cout<<"调用构造函数来初始化对象"<endl pName= new char strlen(name)+1;/重载构造函数 strep(pName, name); sChool new char strlen(unit)+I strcpy(sChool, unit) pNum=new char strlen(num+1; strcpy(pNum, num); strcpy (Box, b ) COMMU: COMMU 析构函数 cou 调用析构造函数来释放对象"<<endl delete pName if(sChool) delete school; if(pNum) delete pnum; void main(void coMmu C1("张建国";"湛江师范学院","02585595638";"210024"); COMMU C2("李国强","湛江海洋大学","02585432455","210015"); cl Printo c2. Printo
{ char *pName; //姓名,数据成员为私有的 char *pSchool; //单位 char *pNum; //电话号码 char Box[10]; //邮编 public: void Print(void) //输出数据成员 {cout<<"姓名:"<<pName<<'\t'; cout<<"单位:"<<pSchool<<'\t'; cout<<"电话号码:"<<pNum<<'\t'; cout<<"邮编:"<<Box<<'\n';} COMMU(char *,char *,char *,char *); COMMU(); ~COMMU(); }; COMMU :: COMMU() //缺省的构造函数 { pName = pSchool = pNum =0; Box[0] = 0;} COMMU::COMMU(char *name,char *unit,char *num,char *b) { cout<<"调用构造函数来初始化对象"<<endl; pName = new char [strlen(name)+1]; //重载构造函数 strcpy(pName,name); pSchool = new char [strlen(unit)+1]; strcpy(pSchool,unit); pNum = new char [strlen(num)+1]; strcpy(pNum,num); strcpy(Box,b); } COMMU::~COMMU( ) //析构函数 {cout<<"调用析构造函数来释放对象"<<endl; if(pName) delete [] pName; if(pSchool) delete [] pSchool; if(pNum) delete [] pNum; } void main(void ) { COMMU c1("张建国","湛江师范学院","025-85595638","210024"); COMMU c2("李国强","湛江海洋大学","025-85432455","210015"); c1.Print(); c2.Print(); }