202130310075
标题1:上机目的:
1:了解类和对象的概念,掌握声明类和定义对象的方法。
2:掌握构造函数和析构函数的实现方法。
3:初步掌握使用类和对象编制C++程序。
标题2:上机要求:
创建一个类,完成以下功能
1:连续输入一组二维坐标。
2:二维坐标值的数目可以由用户自定义。(默认为2个)
3:显示用户输入的坐标。
4:显示用户输入坐标值的均值。
具体实现: 关于 类的 定义和声明
class Coordinate {
public:
Coordinate()
{
times = 2;
cout << "Coordinate construction1 called!" << endl;
}
Coordinate(int times1) //用户自定义输入坐标的数目
{
times = times1;
cout << "Coordinate construction2 called!" << endl;
}
~Coordinate()
{
cout << "Coordinate construction called!" << endl;
}
void InputCoord() //用户连续输入坐标值
{
for (int i = 0; i < times; i++)
{
cout << "Please Input x:" << endl;
cin >> Coord[i][1];
cout << "Please Input y:" << endl;
cin >> Coord[i][2];
}
}
void ShowCoord() //用户显示坐标值
{
cout << "The coord is:" << endl;
for (int i = 0; i < times; i++)
{
cout << "(" << Coord[i][1] << "," << Coord[i][2] << ")" << endl;
}
}
void ShowAvgCoord() //显示坐标的平均值
{
float avgx = 0;
float avgy = 0;
for (int i = 0; i < times; i++)
{
avgx = avgx + Coord[i][1];
avgy = avgy + Coord[i][2];
}
avgx = avgx / times;
avgy = avgy / times;
cout << "The AVG coord is:" << endl;
cout << "(" << avgx << "," << avgy << ")" << endl;
}
private:
float Coord[100][100]; // 存放坐标的二维数组
int times; // 坐标值数目
};
实验内容:
1:观察代码中构造函数和析构函数运行顺序。。
2:在main函数内加入 Coordinate y(5); y.InputCoord(); y.ShowCoord(); y.ShowAvgCoord();观察运行结果。
任务一:代码实现
Coordinate() //构造函数
{
cout << "Coordinate construction1 called!" << endl;
}
~Coordinate() //析构函数
{
cout << "Coordinate construction called!" << endl;
}
操作:在main函数中创建一个一个类对象,运行代码后观察字符输出情况。
结论:构造函数在类对象创建时运行,在main函数介绍后完成 析构函数。
任务二:代码实现
int main()
{
Coordinate y(5);//创建一个名为y的类对象,含有5的坐标值。
y.InputCoord(); 用户输入坐标值
y.ShowCoord(); 显示用户输入的坐标值
y.ShowAvgCoord(); 显示用户输入坐标值的平均值
system("pause");
return 0;
}
运行结果:
最后高级要求:
类似课堂所展示的代码:使用对象数组、赋值式定义、先定义后赋值、多重花括号赋值等,并简单总结/归纳这些方法中的构造和析构函数调用时刻和特点。
Coordinate(int times1) :times(times1 ) //冒号初始化
{
cout << "Coordinate construction2 called!" << endl;
}
Coordinate arr[5]; //类对象数组
注意:构造函数后面的冒号就是初始化,而括号里面的等于号并不是初始化,而是变量生成以后的赋值而已。const和引用不可以被赋值,只能被初始化。
总结:
①构造函数和析构函数是在类体中说明的两种特殊的成员函数。
②构造函数的功能是在创建对象时,使用给定的值来将对象初始化。
③析构函数的功能是用来释放一个对象的。在对象删除前,用它来做一些清理工作,它与构造函数的功能正好相反。
上机3—1具体实验要求已经实现,感谢。