#include <iostream>
using namespace std;
#define PI 3.14
class Container {
public:
Container(double h) {
height=h; //简单的方法初始化h
}
virtual double getvolumn()=0; //纯虚函数
protected:
double height;
};
class Cube:public Container {
public:
Cube(double l, double w, double h):Container(h) {
length=l;
width=w;
}
virtual double getvolumn() {
return length*width*height; //返回值为正方体的体积
}
private: //cube的私有成员
double length;
double width;
};
class Cylinder:public Container {
public:
Cylinder(double r, double h):Container (h) {
radius=r;
height=h;
}
virtual double getvolumn() {
return PI*radius*radius*height;
}
private:
double radius;
};
int main(){
Container *p; //定义指针变量p
Cube cube(10,20,30);
p=&cube; //获得输入的长宽高
cout<<"长方体的体积为"<<p->getvolumn()<<endl;
Cylinder cylinder(10,20);
p=&cylinder; //获得输入的半径和高
cout<<"圆柱体的体积为"<<p->getvolumn()<<endl;
return 0;
}
/*长方体的体积为6000
圆柱体的体积为6280
--------------------------------
Process exited after 0.3998 seconds with return value 0
请按任意键继续. . .*/
#include <iostream> // 包含输入输出流的头文件,用于实现输入输出功能
using namespace std; // 使用C++标准库的命名空间
#define PI 3.14 // 定义π的值为3.14,用于后续计算
// 定义一个名为Container的基类
class Container {
public:
Container(double h) { // 构造函数,用于初始化高度
height = h; // 将传入的高度值赋给成员变量height
}
virtual double getvolumn() = 0; // 纯虚函数,需要在派生类中实现,用于计算体积
protected:
double height; // 保护成员变量,表示高度,可在派生类中被访问
};
// 定义一个名为Cube的派生类,继承自Container类,表示长方体
class Cube : public Container {
public:
// 构造函数,初始化长方体的长、宽和高,并调用基类的构造函数初始化高度
Cube(double l, double w, double h) : Container(h) {
length = l; // 初始化长
width = w; // 初始化宽
}
// 实现基类的纯虚函数,用于计算长方体的体积
virtual double getvolumn() {
return length * width * height; // 返回长方体的体积
}
private: // Cube类的私有成员
double length; // 表示长
double width; // 表示宽
};
// 定义一个名为Cylinder的派生类,继承自Container类,表示圆柱体
class Cylinder : public Container { // 注意:类名拼写错误,应为Cylinder而非Cylinder
public:
// 构造函数,初始化圆柱体的半径和高,并调用基类的构造函数初始化高度
Cylinder(double r, double h) : Container(h) {
radius = r; // 初始化半径
// height = h; // 这行代码是多余的,因为基类构造函数已经初始化了height
}
// 实现基类的纯虚函数,用于计算圆柱体的体积
virtual double getvolumn() {
return PI * radius * radius * height; // 返回圆柱体的体积,使用预定义的π值
}
private:
double radius; // 表示半径
};
int main() { // 主函数
Container *p; // 定义一个指向Container类型的指针p
Cube cube(10, 20, 30); // 创建一个长方体对象,长10,宽20,高30
p = &cube; // 将指针p指向长方体对象
// 输出长方体的体积
cout << "长方体的体积为" << p->getvolumn() << endl;
Cylinder cylinder(10, 20); // 创建一个圆柱体对象,半径10,高20
p = &cylinder; // 将指针p指向圆柱体对象
// 输出圆柱体的体积
cout << "圆柱体的体积为" << p->getvolumn() << endl;
return 0; // 主函数返回0,表示程序正常结束
}
/*
输出结果为:
长方体的体积为6000
圆柱体的体积为6280
*/
标签:初始化,Container,getvolumn,类虚,多态,height,double,长方体,public
From: https://blog.csdn.net/2301_78986604/article/details/139752064