sdut 5-1 繼承與派生
來源:程序員人生 發(fā)布時(shí)間:2014-11-21 08:21:48 閱讀次數(shù):4203次
5⑴ 繼承與派生
Time Limit: 1000MS Memory limit: 65536K
題目描寫
通過本題目的練習(xí)可以掌握繼承與派生的概念,派生類的定義和使用方法,其中派生類構(gòu)造函數(shù)的定義是重點(diǎn)。
要求定義1個(gè)基類Point,它有兩個(gè)私有的float型數(shù)據(jù)成員X,Y;1個(gè)構(gòu)造函數(shù)用于對(duì)數(shù)據(jù)成員初始化;有1個(gè)成員函數(shù)void
Move(float xOff, float yOff)實(shí)現(xiàn)分別對(duì)X,Y值的改變,其中參數(shù)xOff和yOff分別代表偏移量。另外兩個(gè)成員函數(shù)GetX() 、GetY()分別返回X和Y的值。
Rectangle類是基類Point的公有派生類。它增加了兩個(gè)float型的私有數(shù)據(jù)成員W,H; 增加了兩個(gè)成員函數(shù)float
GetH() 、float GetW()分別返回W和H的值;并定義了自己的構(gòu)造函數(shù),實(shí)現(xiàn)對(duì)各個(gè)數(shù)據(jù)成員的初始化。
編寫主函數(shù)main()根據(jù)以下的輸入輸出提示,完成全部程序。
輸入
6個(gè)float型的數(shù)據(jù),分別代表矩形的橫坐標(biāo)X、縱坐標(biāo)Y、寬度W,高度H、橫向偏移量的值、縱向偏移量的值;每一個(gè)數(shù)據(jù)之間用1個(gè)空格間隔
輸出
輸出數(shù)據(jù)共有4個(gè),每一個(gè)數(shù)據(jù)之間用1個(gè)空格間隔。分別代表偏移以后的矩形的橫坐標(biāo)X、縱坐標(biāo)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) {};//定義構(gòu)造函數(shù)
void Move(float xoff, float yoff);//聲明move函數(shù)
float Getx() const {return x;}//定義成員函數(shù)Getx
float Gety() const{return y;}//定義成員函數(shù)Gety
};
void Point :: Move(float xoff, float yoff)//定義Move 函數(shù)
{
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函數(shù)
float Getw() const{return w;}
float Geth() const{return h;}
};
Rectangle :: Rectangle(float x1, float y1, float w1, float h1) : Point(x1, y1)//定義Rectangle函數(shù)
{
w=w1 >= 0 ? w1:0 ;
h=h1 >= 0 ? h1:0 ;
}
int main()//主函數(shù)
{
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;
}
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)