题目:
定义一个点类,如下:
class Point
{
int x,y;
static int countp;//统计点对象个数
public:
Point(int x=1,int y=1);
void Setxy(int xx,int yy);
void Getxy(int &xx,int &yy);//引用参数有什么作用?
static int Get_countp(); //只是返回点对象个数,其中不能写输出语句
};
编程完成各成员函数的定义及countp的初始化,编写main()函数,要求:
1)main()中第一条语句就是通过调用Get_countp()获取点对象个数,然后在主函数中输出显示当前点对象个数;
2)然后定义一个点对象数组,再修改其中第2个点对象元素的坐标,输出显示这个点对象修改后的坐标值;
3)最后再通过调用Get_countp(),输出显示当前点对象个数。
3)除了上述成员函数及主函数,不允许再增加任何函数!
下面我们来实现此实验:
#include<iostream>
using namespace std;
class Point
{
int x, y;
static int countp;//统计点对象个数
public:
Point(int x = 1, int y = 1);
void Setxy(int xx, int yy);
void Getxy(int& xx, int& yy);//引用参数有什么作用?
//利用引用得到x,y的值;
static int Get_countp(); //只是返回点对象个数,其中不能写输出语句
};
int Point::countp = 0;
Point::Point(int x, int y) {
this->x = x;
this->y = y;
countp++;
}
void Point::Setxy(int xx, int yy) {
x = xx; y = yy;
}
void Point::Getxy(int& xx, int& yy){
xx = x; yy = y;
}
int Point::Get_countp() {
return countp;
}
int main() {
int n=Point::Get_countp();
cout << "The number of Points:" << n << endl;
Point* p = new Point[10];
(p + 1)->Setxy(0, 0);
int xx, yy;
(p + 1)->Getxy(xx, yy);
cout << "The second one:" << "(" << xx << "," << yy << ")" << endl;
cout << "The number of Points:" << Point::Get_countp() << endl;
return 0;
}
通过定义类内静态变量以达到统计数据的作用,因为定义了对象数组,所以无参构造函数会连续调用多次,而所有对象共享静态变量用一份数据,所以可以达到统计数据的作用;