继承实验1

题目:
定义一个点类,如下:
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;
}

通过定义类内静态变量以达到统计数据的作用,因为定义了对象数组,所以无参构造函数会连续调用多次,而所有对象共享静态变量用一份数据,所以可以达到统计数据的作用;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值