5-1 继承与派生

本文介绍了一个基于C++的编程示例,演示了如何使用继承与派生的概念来创建派生类,并展示了派生类构造函数的定义及使用方法。通过具体的Point和Rectangle类的实现,读者能够更好地理解面向对象编程中的继承机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5-1 继承与派生
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
通过本题目的练习可以掌握继承与派生的概念,派生类的定义和使用方法,其中派生类构造函数的定义是重点。

要求定义一个基类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()根据以下的输入输出提示,完成整个程序。

Input

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

Output

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

Example Input
5 6 2 3 1 2
Example Output
6 8 2 3
Hint
输入 -5 -6 -2 -3 2 10
输出 -3 4 0 0

Author
黄晶晶

#include <iostream>
#include <string>
#include <cstring>
#include <stdio.h>
using namespace std;

class Point
{
public:
    Point(float a, float b) :x(a), y(b) {}
    float getX()
    {
        return x;
    }
    float getY()
    {
        return y;
    }
    void move(float offx, float offy)
    {
        x += offx;
        y += offy;
    }
private:
    float x, y;
};

class Rectganle:public Point
{
public:
    Rectganle(float a, float b, float c, float d) :Point(a, b), w(c), h(d) {
        if (w < 0)
            w = 0;
        if (h < 0)
            h = 0;
    }
    float getW()
    {
        return w;
    }
    float getH()
    {
        return h;
    }
private:
    float w, h;
};
int main()
{
    float a, b, c, d, e, f;
    cin >> a >> b >> c >> d >> e >> f;
    Rectganle prea(a, b, c, d);
    prea.move(e, f);
    cout << prea.getX() << " "
        << prea.getY() << " "
        << prea.getW() << " "
        << prea.getH() << " "
        << endl;
    return 0;
}
按以下描述和要求建立两个:基 Rectangle(矩形) 和派生类 Cube(正方体) 1. Rectangle 私有成员:     double x1, y1;            //左下角的坐标     double x2, y2;            //右上角的坐标 公有成员:     带缺省值的构造函数 Rectangle(double a=0,double b=0, double c=0, double d=0),对矩 形的左下角坐标和右上角坐标进行初始化,若未赋初值,则矩形的左下角坐标和右上角 坐标都采用缺省值 0;     函数 double getwidth()计算并返回矩形的宽;     函数 double getlength()计算并返回矩形的长;     函数 void display()输出矩形的各坐标及长宽。 2. 立方体 Cube 的底面矩形从基继承 Cube 私有成员:     string name  或者 char name[10];              //立方体的名称(字符串对象)       double h;                                                      //立方体高度 公有成员:     带缺省值的构造函数 Cube(double a=0, double b=0, double c=0, double d=0, char *s=0, double h1=0),其中 char *s 是立方体的名称,double h1 是立方体的高度值;     函数 void set(char *, double)用来修改立方体的名称和高度值;     函数 void display()输出立方体全部信息,并计算输出体积;     函数 Cube add(Cube &S)将形式参数 S 的高度加到 this 对象上。 string 包含在头文件 string.h 中。 3. 主函数要求: (1) 定义 Rectangle 对象 A{坐标:10, 10, 30,40}; 定义 Cube 对象 B{坐标:20, 10, 30, 40;名称和高度:Box, 60}、C(C 数据由 B 拷贝 产生)和 D(D 数据暂无)。 (2) 调用函数 set 修改对象 C 的名称和高度值,数据为{Trunk, 95}。 (3) 调用函数 display 及相关函数输出对象 A、B 和 C 的全部数据,计算输出 B 和 C 的体 积。每个对象的信息占一行。 (4) 调用 add 函数,将 B 和 C 的高度值之和赋值给 D 的高度值,输出 D 的全部数据,计 算并输出 D 的体积。 文件为word形式,请复制粘贴到VS的cpp文件中运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值