📄 mtinheri.cpp
字号:
//这个程序在本书所带软盘中。文件名为MTINHERI.CPP
//这个程序演示怎样利用多重继承从圆和长方形的面积计算导出反拱门
//和拱门的面积计算。
#include <iostream.h>
#define pi 3.1415 //定义pi
class circle //定义基类
{
protected:
float radius;
public:
circle(float); //构造函数
float area(); //计算圆面积成员子程序
};
circle::circle(float r = 1) //构造函数设置初始值
{
radius = r;
}
float circle::area(void) //计算圆面积成员子程序
{
return(pi * radius * radius);
}
class rectangle //定义基类
{
protected:
float length, wide;
public:
rectangle(float, float); //构造函数
float area(); //计算长方形面积成员子程序
};
rectangle::rectangle(float l = 2.0, float w = 2.0)
//2倍的单位圆
{
length = l; wide = w;
}
float rectangle::area(void)
{
return(length * wide);
}
class antiarch : public circle, public rectangle
//从圆和长方形导出反拱门
{
public: //两个新的成员子程序
antiarch(float, float, float);
//构造函数
float area(); //计算反拱门面积的成员子程序
};
//反拱门的构造函数继承了圆的构造函数和长方形的构造函数
antiarch::antiarch(float r = 1.0, float l = 2.0, float w = 2.0)
: circle(r), rectangle(l, w)
{
}
float antiarch::area(void) //成员子程序计算反拱门面积
{
return (rectangle::area() - 1/2.0 * circle::area() );
} //注意调用了两个基类的成员子程序
class arch : public circle, public rectangle
//从圆和长方形导出拱门形体
{
public:
arch(float, float, float); //构造函数
float area(); //计算拱门面积的成员子程序
};
//拱门的构造函数继承了圆的构造函数和长方形的构造函数
arch::arch(float r = 1.0, float l = 2.0, float w = 2.0) : circle(r), rectangle(l, w)
{
}
float arch::area(void) //成员子程序计算拱门面积
{
return (rectangle::area() + 1/2.0 * circle::area());
}
/********************** main() *****************************/
void main(void)
{
circle circle_1, //产生一个单位圆对象
circle_2(12.3); //产生一个半径为12.3的圆对象
rectangle rect_1; //产生一个由构造函数设置初始值的长方形对象
rectangle rect_2(5.2, 3.3); //产生一个长为5.2, 宽为3.3的长方形对象
antiarch Aarch_1, //产生一个由构造函数设置初始值的反拱门对象
Aarch_2(10, 20, 15.2); //产生一个半径为10, 宽为20, 高为15.3的反拱门对象
arch arch_1, //产生一个由构造函数设置初始值的拱门对象
arch_2(10, 20, 15.2); //产生一个半径为10,宽为20,高为25.2的拱门对象
cout << "circle_1 的面积是 " << circle_1.area() << endl;
cout << "circle_2 的面积是 " << circle_2.area() << endl;
cout << "Aarch_1 的面积是 " << Aarch_1.area() << endl;
cout << "Aarch_2 的面积是 " << Aarch_2.area() << endl;
cout << "arch_1 的面积是 " << arch_1.area() << endl;
cout << "arch_2 的面积是 " << arch_2.area() << endl;
}
/*这个程序运行后将显示如下输出结果:
circle_1 的面积是 3.1415
circle_2 的面积是 475.278
Aarch_1 的面积是 2.42925
Aarch_2 的面积是 146.925
arch_1 的面积是 5.57075
arch_2 的面积是 461.075
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -