5-1 继承与派生
题目描述
通过本题目的练习可以掌握继承与派生的概念,派生类的定义和使用方法,其中派生类构造函数的定义是重点。要求定义一个基类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的值
示例输入
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; }

浙公网安备 33010602011771号