sdut 5-1 繼承與派生
來源:程序員人生 發布時間:2014-11-21 08:21:48 閱讀次數:4198次
5⑴ 繼承與派生
Time Limit: 1000MS Memory limit: 65536K
題目描寫
通過本題目的練習可以掌握繼承與派生的概念,派生類的定義和使用方法,其中派生類構造函數的定義是重點。
要求定義1個基類Point,它有兩個私有的float型數據成員X,Y;1個構造函數用于對數據成員初始化;有1個成員函數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、橫向偏移量的值、縱向偏移量的值;每一個數據之間用1個空格間隔
輸出
輸出數據共有4個,每一個數據之間用1個空格間隔。分別代表偏移以后的矩形的橫坐標X、縱坐標Y、寬度W,高度H的值
示例輸入
示例輸出
提示
輸入 ⑸ ⑹ ⑵ ⑶ 2 10
輸出 ⑶ 4 0 0
來源
#include <iostream>
using namespace std;
class Point //聲明Point類
{
private :
float x, y;
public :
Point (float x1=0, float y1=0): x(x1), y(y1) {};//定義構造函數
void Move(float xoff, float yoff);//聲明move函數
float Getx() const {return x;}//定義成員函數Getx
float Gety() const{return y;}//定義成員函數Gety
};
void Point :: Move(float xoff, float yoff)//定義Move 函數
{
x = x + xoff;
y = y + yoff;
}
class Rectangle : public Point//定義Rectangle類
{
private :
float w, h;
public :
Rectangle(float x1, float y1, float w1, float h);//聲明Rectangle函數
float Getw() const{return w;}
float Geth() const{return h;}
};
Rectangle :: Rectangle(float x1, float y1, float w1, float h1) : Point(x1, y1)//定義Rectangle函數
{
w=w1 >= 0 ? w1:0 ;
h=h1 >= 0 ? h1:0 ;
}
int main()//主函數
{
float x, y, w, h, xoff, yoff;
cin>>x>>y>>w>>h>>xoff>>yoff;
Point p1(x, y);
Rectangle r1(x, y, w, h);
p1.Move(xoff, yoff);
cout <<p1.Getx()<<" "<<p1.Gety()<<" "<<r1.Getw()<<" "<<r1.Geth()<< endl;
return 0;
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈