罗玉萍实验报告三12147Word文档下载推荐.docx
《罗玉萍实验报告三12147Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《罗玉萍实验报告三12147Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
第三种情况:
如果函数的返回值是类的对象,函数执行完成返回调用者时。
以下程序都是定义一个屏幕上的点类,该类具有x,y坐标属性。
【程序1】
#include<
iostream>
usingnamespacestd;
classPoint
{
public:
Point(intxx=0,intyy=0)
X=xx;
Y=yy;
cout<
<
"
调用构造函数\n"
;
}
Point(Point&
p);
intGetX(){returnX;
}
intGetY(){returnY;
private:
intX,Y;
};
Point:
:
p)
X=p.X;
Y=p.Y;
cout<
调用拷贝构造函数\n"
voidmain()
PointA(3,4);
//a行
PointB(A);
//b行
B.GetX()<
\n"
思考:
(a)将b行改写为PointB=A;
程序输出结果会有变化吗?
(b)将b行改写为PointB;
B=A;
【程序2】
Point(intxx=0,intyy=0)
{
X=xx;
cout<
Point(Point&
intGetX(){returnX;
intGetY(){returnY;
X=p.X;
Y=p.Y;
voidfun1(Pointp)
p.GetX()<
PointA(4,5);
fun1(B);
//调用拷贝构造函数,实现形参和实参结合
【程序3】
Point(intxx=0,intyy=0)
X=xx;
Y=yy;
Pointfun2()
PointTemp(10,20);
//调用构造函数
returnTemp;
PointA(4,5);
PointB(A);
B=fun2();
(2)创建一个雇员类,该类中数据成员有姓名、家庭住址和邮政编码等,其功能有修改姓名、显示数据信息,要求其功能函数的原型放在类定义体中。
classEmployee
Employee(char*pName="
char*pAddress="
char*pPostalcode="
)
name=newchar(strlen(pName)+1);
strcpy(name,pName);
address=newchar(strlen(pAddress)+1);
strcpy(address,pAddress);
strcpy(postalcode,pPostalcode);
voidmodifyName(char*pName)
strcpy(name,pName);
voidmodifyAddress(char*pAddress)
strcpy(address,pAddress);
voidmodifyPostalcode(char*pPostalcode)
strcpy(postalcode,pPostalcode);
voiddisplay()
name<
\t"
<
地址:
address<
邮编:
postalcode<
endl;
char*name;
char*address;
charpostalcode[7];
intmain()
Employeeem[3]={Employee("
李琳"
"
张家口"
075000"
),
Employee("
张强"
北京"
100011"
王明"
天津"
300232"
)};
for(inti=0;
i<
3;
i++)
em[i].display();
em[1].modifyName("
张晓强"
);
张强改名为张晓强,第二个雇员的信息为:
em[1].display();
return0;
思考:
为什么将姓名、家庭住址设计为指针类型?
邮政编码设计为数组类型?
2.编写程序
建立一个矩阵类Array,存储一个4*4的矩阵并能在矩阵中查找数据。
要求如下:
(a)私有数据成员
·
intpx[4][4]:
存储一个4*4矩阵的值。
intn:
矩阵的行数。
(b)公有数据成员
intx:
存储根据查找要求在矩阵中要找到的某数。
intim,jm:
存储该数所在的行、列值。
(c)公有成员函数
构造函数:
初始化n的值为4,x、im、jm为0。
voidinput(inta[][4]):
将一个矩阵赋给该对象中的数组。
voidfind():
在该对象存储的矩阵中查找值最小的数,保存该数及该数所在的行、列值到x,im,jm中。
voidprint():
按行输出矩阵的值
(d)编写一个程序测试该类,使用以下测试数据,输出矩阵的值,查找值最小的数并输出x、im、jm的值。
3.熟悉多文件程序
(1)在实际程序设计中,一个源程序按照结构可以划分为3个文件:
类声明文件(*.h文件)、类实现文件(*.cpp)和类的使用文件(*.cpp,主函数文件)。
*类声明文件(*.h文件):
将类的声明部分放在类声明文件(头文件)中,这就形成了类的public接口,向用户提供调用类成员函数所需的函数原型。
*类实现文件(*.cpp):
将类成员函数的定义放在类实现文件中,这就形成了类的实现方法。
*类的使用文件(*.cpp,主函数文件):
将类的使用部分(通常是主程序)放在类使用文件中,这样可以清晰地表示出本程序所要完成的工作。
(2)尝试完成一个C++多文件程序的开发过程。
先依据之前学习的内容创建一个新的空工程,然后依次在该工程中添加下列文件:
//文件1student.h(类的声明部分)
classStudent{
//类的外部接口
Student(char*name1,char*stu_no1,floatscore1);
//声明构造函数
~Student();
//声明析构函数
voidmodify(floatscore1);
//声明数据修改函数
voidshow();
//声明数据输出函数
//学生姓名
char*stu_no;
//学生学号
floatscore;
//学生成绩
//文件2student.cpp(类的实现部分)
#include"
student.h"
//包含类的声明文件
Student:
Student(char*name1,char*stu_no1,floatscore1){
name=newchar[strlen(name1)+1];
//构造函数的实现
strcpy(name,name1);
stu_no=newchar[strlen(stu_no1)+1];
strcpy(stu_no,stu_no1);
score=score1;
}
~Student()//析构函数的实现
{delete[]name;
delete[]stu_no;
}
voidStudent:
modify(floatscore1)//数据修改函数的实现
{score=score1;
show()//数据输出函数的实现
{cout<
name:
"
stu_no:
stu_no<
score:
score<
//文件3studentmain.cpp(类的使用部分)
{Studentstu1("
Liming"
20080201"
90);
//定义类Student的对象stu1,调用stu1的构造函数,初始化对象stu1
stu1.show();
//调用stu1的成员函数show,显示stu1的数据
stu1.modify(88);
//调用stu1的成员函数modify,修改stu1的数据
//调用stu1的成员函数show,显示stu1修改后的数据
四、实验步骤
1.【程序1】
(a)
#include<
PointB=A;
(b)
PointB;
B=A
2
iomanip>
classArray
intx;
//存储根据查找要求在矩阵中要找到的某数
intim,jm;
//存储该数所在的行、列值
Array();
voidinput(inta[][4]);
//将一个矩阵赋给该对象中的数组
voidfind();
//在该对象存储的矩阵中查找值最小的数
voidprint();
intpx[4][4];
//存储一个4*4矩阵的值。
intn;
//矩阵的行数
}arr;
Array:
Array()
x=0;
n=4;
im=0;
jm=0;
voidArray:
input(inta[][4])
4;
{
for(intj=0;
j<
j++)
px[i][j]=a[i][j];
}
print()
矩阵信息为:
for(intj=0;
cout<
setw(3)<
px[i][j];
其中最小的数为:
x<
该数所在行数为:
im<
endl
<
该数所在列数为:
jm<
find()
x=px[0][0];
for(inti=0;
if(px[i][j]<
x)
{
x=px[i][j];
im=i+1;
jm=j+1;
}
inta[4][4];
请输入(4*4)矩阵信息:
cin>
>
a[i][j];
arr.input(a);
arr.find();
arr.print();
五、实验结果
(a)程序结果不会有变化
(b)程序结果会发生变化
(2)
答:
姓名和地址设为指针类型是因为指针传递时双向的,使得调用的函数也能使内容改变。
邮政编码设为数组类型是因为邮政编码的第一个数可能是0,这样就能避免0不被显示出来。
2.
六、实验心得
预测时,出现错误,与调试的结果不同。
找出自己哪里出错了。
在编写4*4的矩阵时,程序出现了很多问题,输出方法编写也出现错误,说明这方面还不太熟,要看书,多多练习。