定义派生类长方体类cuboid,公有继承第1题的rectangle类。在cuboid类中增加私有数
时间: 2023-07-10 16:33:17 浏览: 194
在派生类长方体类 `cuboid` 中增加私有数据成员 `height` 表示长方体的高度,可以如下定义:
```cpp
class cuboid : public rectangle {
private:
double height;
public:
cuboid(double l = 0, double w = 0, double h = 0) : rectangle(l, w), height(h) {}
double volume() const { return getLength() * getWidth() * height; }
};
```
在构造函数中,我们首先调用基类 `rectangle` 的构造函数,再将 `height` 初始化为 `h`。在 `volume` 函数中,直接调用基类的 `getLength` 和 `getWidth` 函数获取长和宽,再乘上 `height` 就可以得到长方体的体积。
相关问题
定义派生类长方体类Cuboid,公有继承第1题的Rectangle类。在Cuboid类中增加私有数据成员作为长方体的高(整型),公有成员函数volume()计算长方体的体积。在main函数中输入3个整型数据作为长方体的长、宽和高,计算长方体的体积并输出。 【输入形式】 3个整数 【输出形式】 1个整数 【样例输入】 【样例输出】 【样例说明】 【评分标准】 #include <iostream> using namespace std; class Rectangle { private: public: //构造函数 //面积函数 }; class Cuboid:public Rectangle { private: public: //构造函数 //体积函数 }; int main() { int x,y,z; cin>>x>>y>>z; //定义Cuboid类对象c并初始化 cout<<c.volumn()<<endl; return 0; }
好的,我明白了。以下是代码实现:
```
#include <iostream>
using namespace std;
class Rectangle {
private:
int length;
int width;
public:
Rectangle(int l, int w) {
length = l;
width = w;
}
int area() {
return length * width;
}
};
class Cuboid : public Rectangle {
private:
int height;
public:
Cuboid(int l, int w, int h) : Rectangle(l, w) {
height = h;
}
int volume() {
return area() * height;
}
};
int main() {
int x, y, z;
cin >> x >> y >> z;
Cuboid c(x, y, z);
cout << c.volume() << endl;
return 0;
}
```
注意,这里的 `Rectangle` 类中的 `area` 函数没有加 `virtual` 关键字,因为 `Cuboid` 类中的 `volume` 函数只需要调用 `area` 函数即可,不需要在 `Cuboid` 类中重写 `area` 函数。
【问题描述】 定义派生类长方体类Cuboid,公有继承第1题的Rectangle类。在Cuboid类中增加私有数据成员作为长方体的高(整型),公有成员函数volume()计算长方体的体积。在main函数中输入3个整型数据作为长方体的长、宽和高,计算长方体的体积并输出。 【输入形式】 3个整数 【输出形式】 1个整数 【样例输入】 【样例输出】 【样例说明】 【评分标准】 #include <iostream> using namespace std; class Rectangle { private: public: //构造函数 //面积函数 }; class Cuboid:public Rectangle { private: public: //构造函数 //体积函数 }; int main() { int x,y,z; cin>>x>>y>>z; //定义Cuboid类对象c并初始化 cout<<c.volumn()<<endl; return 0; }
根据题目要求,我们可以定义如下的 `Rectangle` 和 `Cuboid` 类:
```cpp
#include <iostream>
using namespace std;
class Rectangle {
private:
int length;
int width;
public:
Rectangle(int l = 0, int w = 0) : length(l), width(w) {}
int area() const { return length * width; }
};
class Cuboid : public Rectangle {
private:
int height;
public:
Cuboid(int l = 0, int w = 0, int h = 0) : Rectangle(l, w), height(h) {}
int volume() const { return area() * height; }
};
```
在 `Rectangle` 类中,我们将 `length` 和 `width` 定义为私有数据成员,并提供了构造函数和 `area` 函数计算面积。
在 `Cuboid` 类中,我们使用公有继承从 `Rectangle` 类继承了 `length` 和 `width`,并在其中增加了私有数据成员 `height`。在构造函数中,我们首先调用基类 `Rectangle` 的构造函数,再将 `height` 初始化为 `h`。在 `volume` 函数中,我们直接调用基类的 `area` 函数获取底面积,再乘上 `height` 就可以得到长方体的体积。
接下来,在 `main` 函数中,我们输入长、宽和高,再创建 `Cuboid` 类的对象 `c` 并将其初始化,最后输出 `c` 的体积即可:
```cpp
int main() {
int x, y, z;
cin >> x >> y >> z;
Cuboid c(x, y, z);
cout << c.volume() << endl;
return 0;
}
```
阅读全文