qq_43676143
shadowfail
采纳率100%
2018-12-28 12:53 阅读 844

C++作业派生类的定义求解

如下,现已有一个完整的长方形的类Rectangle, 数据成员有长和宽,成员函数包括一个构造函数和一个计算面积的函数area()。

请写出一个表示长方体的派生类Box,继承这个已给出的Rectangle类,满足以下要求:

(1)* 只能新增一个数据成员:height (高)。

(2)* 定义一个合适的Box类构造函数,使得main函数中创建对象的初始化可行;

(3)* 使用合适的继承方式,使得main函数中能通过派生类Box对象直接调用基类中的area()函数输出底面积。

(4) 新增一个成员函数 volume() 返回长方体的体积,使得main函数中的调用可行;

#include
using namespace std;

class Rectangle //长方形
{
public:
Rectangle(double l, double w) : length(l), width(w)
{
}
double area()
{
return length * width;
}
private:
double length; //长
double width; //宽
};

//在此定义派生类Box
// 在此处补充你的代码
int main()
{
Box b1(10, 20, 30);
cout << b1.area() << endl;
cout << b1.volume() << endl;
return 0;
}
输入

输出
main函数输出的两行,第一行应该是b1的底面积,第二行输出的是b1的体积
样例输入

样例输出
200
6000

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    meet_code meet_code 2018-12-28 05:45

    代码如下,已测试,结果如图,望采纳

    #include <iostream>
    using namespace std;
    
    class Rectangle //长方形
    {
    public:
        Rectangle(double l, double w) : length(l), width(w)
    {}
        double area()
        {
            return length * width;
        }
    protected:
        double length; //长
        double width; //宽
    };
    class Box : public Rectangle //长方体,公有继承长方形
    {
    private:
        double height;
    public:
        Box(double l, double w, double h) : Rectangle(l,w), height(h)  子类的初始化表中应该包含对父类的初始化
        {
        }
        double volume()
        {
            return length*width*height;
        }
    };
    int main()
    {
        Box b1(10, 20, 30);
        cout << b1.area() << endl;
        cout << b1.volume() << endl;
        return 0;
    }
    

    图片说明

    点赞 1 评论 复制链接分享
  • weixin_41461277 _ZGq 2018-12-28 05:02

    这个无法做到,因为Rectangle类中两个变量的访问权限为private(只有本类可见,连子类都不可见),
    下面的代码是基于把private改成protected实现的:
    (没有测试过,如有拼写错误请原谅)

    class Box : public Rectangle{
        Box(double l, double w, double h) : length(l), width(w), height(h)
        {
        }
        double volume(){
            return length*width*height;
        }
        private: // or protected
        double height;
    };
    
    点赞 评论 复制链接分享
  • weixin_40237617 会飞的木木 2018-12-28 07:47
    #include<iostream>
    using namespace std;
    
    class Rectangle //长方形
    {
    public:
        Rectangle(double l, double w) : length(l), width(w)
        {
        }
        double area()
        {
            return length * width;
        }
    private:
        double length; //长
        double width; //宽
    };
    
    class Box :public Rectangle
    {
    private:
        double height;
    public:
        Box(double l, double w, double h) :Rectangle(l, w), height(h){}
    
        double volume()
        {
            return height*area();
        }
    };
    
    //在此定义派生类Box
    // 在此处补充你的代码
    int main()
    {
        Box b1(10, 20, 30);
        cout << b1.area() << endl;
        cout << b1.volume() << endl;
        system("PAUSE");
        return 0;
    }
    

    私有属性不能丢 不然与题不符

    父类提供了底面积接口 可以直接用就行

    点赞 评论 复制链接分享

相关推荐