实验内容1:
类是C++中的一种构造的数据类型。它即可包含描述事物的数据,又可包含处理这些数据的函数关键字private、public、protected的作用是限定成员的访问权限,这三个关键字在类中的使用先后顺序无关紧要,并且每一个关键字在类体中可使用多次在类体中,当省略关键字private时,系统默认为所定义的成员数据为私有成员,即在类体中没有明确地指出成员的访问权限时,系统约定这些统要回收对象所占用的存储空间,即要撤销一个对象。这个工作是由析构函数来完成的。成员为私有成员。“::”称为作用域运算符,
构造函数它指出该函数是某一个类的成员函数第一种是使用初始化数据列表的方法,第二种是通过构造函数实现初始化,第三种是通过对象的拷贝初始化函数来实现。第一种只能对类的公有数据成员初始化,而不能对私有的或保护的数据成员进行初始化。通常使用构造函数来实现对对象的数据成员的初始化较为常见。构造函数是类的成员函数,系统约定构造函数名必须与类名相同。用new运算符建立对象时,同样的也要自动调用构造函数,
产生对象时,系统要为对象分配存储空间;在对象结束其生命周期或结束其作用域(静态存储类型的对象除外)时,系统要回收对象所占用的存储空间,即要撤销一个对象。这个工作是由析构函数来完成的。
- 观察例程中的构造函数和析构函数的运行顺序;
代码:
#include<iostream>
using namespace std;
class Coordinate
{
public:
Coordinate()
{
times = 2;
cout << "Coordinate construction1 called!" << endl;// 设置默认的输入坐标数目
}
Coordinate(int times1)
{
times = times1;
cout << "Coordinate construction2 called!" << endl; // 设置输入坐标数目
}
~Coordinate()
{
cout << "Coordinate destruction 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; // 存放输入坐标数目
};
int main()
{
Coordinate x; // 定义对象
x.InputCoord();
x.ShowCoord();
x.ShowAvgCoord();
return 0;
// 执行显示和坐标均值运算
}
运行结果:
- 在main()函数中加入如下代码,观察运行结果:
Coordinate y(5);
y.InputCoord();
y.ShowCoord();
y.ShowAvgCoord();
代码:(与上面代码重复地方已省)
int main()
{ Coordinate y(5);
y.InputCoord();
y.ShowCoord();
y.ShowAvgCoord();
return 0;
// 执行显示和坐标均值运算
}
执行结果: