计算几种不同的三维图形的表面积和体积。这里定义一个抽象类CShape,将其成员函数显示基本图形信息函数DispAttr()、计算表面积函数SArea()和计算体积函数Volume()定义为纯虚函数。根据此抽象类派生出球体、正方体、
时间: 2024-03-10 21:48:02 浏览: 13
圆柱体、锥体和棱锥体这五个类。下面是这些类的定义:
```C++
class CShape {
public:
virtual void DispAttr() = 0;
virtual double SArea() = 0;
virtual double Volume() = 0;
};
class CCube : public CShape {
public:
CCube(double a) : m_a(a) {}
void DispAttr() { cout << "Edge length = " << m_a << endl; }
double SArea() { return 6 * m_a * m_a; }
double Volume() { return m_a * m_a * m_a; }
private:
double m_a;
};
class CSphere : public CShape {
public:
CSphere(double r) : m_r(r) {}
void DispAttr() { cout << "Radius = " << m_r << endl; }
double SArea() { return 4 * PI * m_r * m_r; }
double Volume() { return 4.0 / 3.0 * PI * m_r * m_r * m_r; }
private:
double m_r;
};
class CCylinder : public CShape {
public:
CCylinder(double r, double h) : m_r(r), m_h(h) {}
void DispAttr() { cout << "Radius = " << m_r << ", Height = " << m_h << endl; }
double SArea() { return 2 * PI * m_r * m_h + 2 * PI * m_r * m_r; }
double Volume() { return PI * m_r * m_r * m_h; }
private:
double m_r;
double m_h;
};
class CConicalFrustum : public CShape {
public:
CConicalFrustum(double r1, double r2, double h) : m_r1(r1), m_r2(r2), m_h(h) {}
void DispAttr() { cout << "Top radius = " << m_r1 << ", Bottom radius = " << m_r2 << ", Height = " << m_h << endl; }
double SArea() { return PI * (m_r1 + m_r2) * sqrt((m_r1 - m_r2) * (m_r1 - m_r2) + m_h * m_h) + PI * m_r1 * m_r1 + PI * m_r2 * m_r2; }
double Volume() { return 1.0 / 3.0 * PI * m_h * (m_r1 * m_r1 + m_r2 * m_r2 + m_r1 * m_r2); }
private:
double m_r1;
double m_r2;
double m_h;
};
class CPentagonalPyramid : public CShape {
public:
CPentagonalPyramid(double a, double h) : m_a(a), m_h(h) {}
void DispAttr() { cout << "Edge length = " << m_a << ", Height = " << m_h << endl; }
double SArea() { return 5 * m_a * m_a / 4 * sqrt(5 + 2 * sqrt(5)) + 5 * m_a * sqrt(m_h * m_h + (m_a / (2 * sqrt(5 + 2 * sqrt(5)))) * (m_a / (2 * sqrt(5 + 2 * sqrt(5))))); }
double Volume() { return 5.0 / 12.0 * m_a * m_a * m_h; }
private:
double m_a;
double m_h;
};
```
这些类分别表示了正方体、球体、圆柱体、锥体和棱锥体这五种不同的三维图形。它们都继承自CShape抽象类,并实现了基本图形信息、表面积和体积的计算方法。