问题 B: C++继承与派生——矩形类

题目描述

通过本题目的练习可以掌握继承与派生的概念,派生类的定义和使用方法,其中派生类构造函数的定义是重点。

要求定义一个基类 Point,它有两个私有的 float 型数据成员 X,Y;一个构造函数用于对数据成员初始化;有一个成员函数 void Move(float xOff, float yOff)实现分别对 X,Y 值的改变,其中参数 xOff 和 yOff 分别代表偏移量。另外两个成员函数 GetX() 、GetY()分别返回 X 和 Y 的值。

Rectangle 类是基类 Point 的公有派生类。它增加了两个 float 型的私有数据成员 W,H; 增加了两个成员函数 float GetH() 、float GetW()分别返回 W 和 H 的值;并定义了自己的构造函数,实现对各个数据成员的初始化。

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

输入

6 个 float 型的数据,分别代表矩形的横坐标 X、纵坐标 Y、宽度 W,高度 H、横向偏移量的值、纵向偏移量的值;每个数据之间用一个空格间隔

输出

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

样例输入

1
5 6 2 3 1 2

样例输出

1
6 8 2 3

提示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<iostream>
using namespace std;
class Point{
float X,Y;
public:
Point(){
cin>>X>>Y;
}
void Move(float xOff, float yOff){
X+=xOff,Y+=yOff;
}
float GetX(){
return X;
}
float GetY(){
return Y;
}
};
class Rectangle:public Point{
float W,H;
public:
Rectangle(){
cin>>W>>H;
}
float GetW(){
return W;
}
float GetH(){
return H;
}
};
int main(){
Rectangle a;
int ox,oy;
cin>>ox>>oy;
a.Move(ox,oy);
cout<<a.GetX()<<' '<<a.GetY()<<' '<<a.GetW()<<' '<<a.GetH()<<endl;
return 0;
}