5-1 继承与派生

题目描述

通过本题目的练习可以掌握继承与派生的概念,派生类的定义和使用方法,其中派生类构造函数的定义是重点。要求定义一个基类Point,它有两个私有的float型数据成员X,Y;

一个构造函数用于对数据成员初始化;有一个成员函数void Move(float xOff, float yOff)实现分别对X,Y值的改变,其中参数xOffyOff分别代表偏移量。另外两个成员函数

GetX() GetY()分别返回XY的值。 

Rectangle类是基类Point的公有派生类。它增加了两个float型的私有数据成员W,H; 增加了两个成员函数float GetH() float GetW()分别返回WH的值;并定义了自己的

构造函数,实现对各个数据成员的初始化。

编写主函数main()根据以下的输入输出提示,完成整个程序。

输入

6float型的数据,分别代表矩形的横坐标X、纵坐标Y、宽度W,高度H、横向偏移量的值、纵向偏移量的值;

每个数据之间用一个空格间隔

输出

 输出数据共有4个,每个数据之间用一个空格间隔。分别代表偏移以后的矩形的横坐标X、纵坐标Y、宽度W,高度H的值 

示例输入

5 6 2 3 1 2

示例输出

6 8 2 3

提示

 输入 
-5 -6 -2 -3 2 10

输出 

-3 4 0 0

 示例程序

 

 

#include <iostream>

using namespace std;

class point//定义基类函数
{
public:
    point()//基类构造函数
    {
        x=0;
        y=0;
    }
    void getpoint()
    {
        cin>>x>>y;
    }
    float getX(float);
    float getY(float);
    void Move(float,float);
    void show();
private:
    float x,y;
};
void point::Move(float a,float b)
{
    x+=a;
    y+=b;
}
float point :: getX(float a)
{
    return x+a;
}
float point :: getY(float b)
{
    return y+b;
}
void point :: show()
{
    cout<<x<<" "<<y;
}
class rectangle : public point//派生类函数
{
public:
    rectangle(){w=0;h=0;}//派生类构造函数
    void setdata()
    {
        getpoint();//在派生类中调用基类输入函数
        cin>>w>>h;
        if(w<=0)
            w=0;
        if(h<=0)
            h=0;
    }
    void display();
    float getW();
    float getH();
private:
    float w,h;
};
float rectangle::getW()
{
    return(w);
}
float rectangle::getH()
{
    return (h);
}
void rectangle :: display()
{
    show();
    cout<<" "<<w<<" "<<h<<endl;
}
int main()
{
    float m,n;
    rectangle re;
    re.setdata();
    cin>>m>>n;
    re.Move(m,n);
    re.display();
    return 0;
}

  

posted @ 2014-11-07 09:04  夏迩  阅读(541)  评论(0)    收藏  举报