}
改写程序,要求:
1)将数据成员改为私有的;
2)将输入和输出的功能改为由成员函数实现;
3)在类体内定义成员函数。
然后编译和运行程序。
请分析什么成员应指定为公有的?
什么成员应指定为私有的?
什么函数最好放在类中定义?
什么函数最好在类外定义?
2.求3个长方体的体积,请编一个基于对象的程序。
数据成员包括length(长)、width(宽)、height(高),要求用成员函数实现以下功能:
1)由键盘分别输入3个长方体的长、宽、高;
2)计算长方体的体积;
3)输出3个长方体的体积。
3.实现类的定义,借助VC++的方法建立一个新的类,采用多文件的方法来存储程序文件。
分别给出如下的3个文件
1)含类定义的头文件student.h
//student.h
classStudent//类的定义
{
public:
voiddisplay();//公有成员函数的声明
private:
intnum;
charname[20];
charsex;
};
2)包含成员函数定义的源文件
//student.cpp
#include
#include“student.h”
voidStudent:
:
display()//在类外定义display成员函数
{cout<<“num:
”<cout<<“name:
”<cout<<“sex:
”<}
3)包含主函数的源文件main.cpp
为了组成一个完整的源程序,应当有包括主函数的文件:
//main.cpp
#include
#include“student.h”
voidmain()
{Studentstu;
stu.display();
}
请完善该程序,在类中增加一个对数据成员赋初值的成员函数set_value,上机调试并运行。
三、编程分析及运行结果
1.对外开放的成员指定为公有的。
访问权限被限制的成员指定为私有的。
函数定义比较长的在类外定义。
函数定义比较较短的在类内定义。
#include
usingnamespacestd;
classPoint
{
private:
inthour;
intminute;
intsec;
public:
voidSetpoint(intx,inty,intz)
{
hour=x;
minute=y;
sec=z;
}
voidprint()
{
cout<}
};
voidmain()
{
Pointpo;
po.Setpoint(5,28,49);
po.print();
}
运行结果:
2.#include
usingnamespacestd;
classTi
{
private:
floatchang;
floatkuan;
floatgao;
public:
voidlength()
{
cin>>chang;
}
voidwidth()
{
cin>>kuan;
}
voidheigth()
{
cin>>gao;
}
voidprint()
{
cout<}
};
voidmain()
{
Tistd;
cout<<"输入长=";
std.length();
cout<<"输入宽=";
std.width();
cout<<"输入高=";
std.heigth();
std.print();
}
运行结果:
3.#include
usingnamespacestd;
classStudent
{
public:
voiddisplay();
voidset_value()
{
cout<<"学号"<cin>>num;
cout<<"姓名"<cin>>name;
cout<<"性别"<cin>>sex;
}
private:
intnum;
charname[20];
charsex;
};
voidStudent:
:
display()
{
cout<<"num:
"<cout<<"name:
"<cout<<"sex:
"<}
voidmain()
{
Studentstu;
stu.set_value();
stu.display();
}
运行结果:
四、解决方法及难点
五、实验体会
实验题目
实验五构造函数与析构函数的编程
实验室
9307
实验时间
年月日
实验类别
验证
同组人数
1
成绩
指导教师签字:
一、实验目的
1.进一步加深对类和对象的理解。
2.掌握类的构造函数和析构函数的概念、意义和使用方法。
3.掌握重载构造函数的含义和使用。
4.编写一个较为复杂的类和对象的应用程序。
二、实验内容
1.设计一个程序,定义一个矩形类,包括数据成员和函数成员。
要求有构造函数、析构函数,完成赋值、显示、计算矩形的面积等接口,并编写main函数进行测试。
classRect
{public:
intArea_int();
Rect(intl,intw);
~Rect();
private:
intnLength;
intnWidth;
};
2.重载构造函数。
修改上题,一种构造函数用整型变量记录矩形的长和宽,另一种构造函数用double型记录矩形的长和宽,然后完成成员函数及主函数。
ClassRect
{public:
intArea_int();
doubleArea_double();
Rect(doublel,doublew);
Rect(intl,intw);
~Rect();
private:
intnLength;
intnWidth;
doublemLength;
doublemWidth;
};
3.构造一个类countstr,要求用构造函数设置计数器count的初始值为0,成员函数countchar()不返回任何值,它要求用户输入一段文字,按Enter键后结束计算,用count记录输入的字符数,成员函数getchar()返回count的整数值。
三、编程分析及运行结果
1.#include
#include
classRect
{
public:
intArea_int();
Rect(intl,intw);
~Rect();
private:
intnLength;
intnWidth;
};
Rect:
:
Rect(intl,intw)
{
nLength=l;
nWidth=w;
cout<<"constructing…"<}
Rect:
:
~Rect()
{
cout<<"destructing…"<}
intRect:
:
Area_int()
{
intx;
x=nLength*nWidth;
returnx;
}
voidmain()
{
RectArea(10,5);
cout<<"s="<}
运行结果:
2.#include
#include
classRect
{
public:
intArea_int();
doubleArea_double();
Rect(doublel,doublew);
Rect(intl,intw);
~Rect();
private:
intnLength;
intnWidth;
doublemLength;
doublemWidth;
};
Rect:
:
Rect(intl,intw)
{
nLength=l;
nWidth=w;
cout<<"constructing…"<}
Rect:
:
Rect(doublel,doublew)
{
mLength=l;
mWidth=w;
cout<<"constructing…"<}
Rect:
:
~Rect()
{
cout<<"destructing…"<}
intRect:
:
Area_int()
{
intx;
x=nLength*nWidth;
returnx;
}
doubleRect:
:
Area_double()
{
doubley;
y=mLength*mWidth;
returny;
}
voidmain()
{
RectArea1(9,4);
cout<<"a的面积="<RectArea2(2.2,1.1);
cout<<"b的面积="<}
运行结果:
3.#include
classcountstr
{
public:
countstr()
{
count=0;
}
voidcountchar()
{
cout<<"请输入字符串";
cin>>str;
while(str[count]!
='\0')
count++;
}
intgetchar()
{
returncount;
}
private:
intcount;
charstr[200];
};
voidmain()
{
countstrs;
s.countchar();
cout<<"thenumber="<}
运行结果:
四、解决方法及难点
五、实验体会