一个c++程序题,希望大神解答,很急的,先谢谢啦

l 设计Shape类,它是一个抽象基类
l Shape类中的函数成员是print;
l Shape类派生出TwoDimensionalShape(二维形状类)和ThreeDimensionalShape(三维形状类),这两个类也是抽象类
l TwoDimensionalShape包含虚函数area
l ThreeDimensionalShape中包含虚函数areah和volume
l Circle类是TwoDimensionalShape的派生类,它是一个具体类
l Circle类中数据成radius表示半径;
l Circle类中函数成员set能够设置数据成员的值
l 在main函数中声明Shape类指针ps和TwoDimensionalShape类指针ptr;
l 对象c调用函数成员set,为当前对象数据成员赋值;
l 对象c的地址为指针ps和指针ptr赋值;
l 分别使用c、ps和ptr调用area函数,观察结果

/*
l 设计Shape类,它是一个抽象基类
l Shape类中的函数成员是print;
l Shape类派生出TwoDimensionalShape(二维形状类)和ThreeDimensionalShape(三维形状类),这两个类也是抽象类
l TwoDimensionalShape包含虚函数area
l ThreeDimensionalShape中包含虚函数areah和volume
l Circle类是TwoDimensionalShape的派生类,它是一个具体类
l Circle类中数据成radius表示半径;
l Circle类中函数成员set能够设置数据成员的值
l 在main函数中声明Shape类指针ps和TwoDimensionalShape类指针ptr;
l 对象c调用函数成员set,为当前对象数据成员赋值;
l 对象c的地址为指针ps和指针ptr赋值;
l 分别使用c、ps和ptr调用area函数,观察结果
*/
#include <iostream>
using namespace std;
#define PI 3.14
class Shape
{
public:
virtual void print() = 0;
};
class TwoDimensionalShape: public Shape
{
public:
virtual double area() = 0;
};
class ThreeDimensionalShape: public Shape
{
public:
virtual double areah() = 0;
virtual double volume() = 0;
};
class Circle: public TwoDimensionalShape
{
public:
double radius;
void set(double radiusInput){ this->radius = radiusInput;}
double area(){
double f_area = radius*radius*PI;
printf("圆面积为:%lf\n",f_area);
return f_area;
}
void print(){}
};
int main()
{
Shape *ps;
TwoDimensionalShape *ptr;
Circle c=Circle();
c.set(10);
ps = &c;
ptr = &c;
c.area();
//ps->area();//这里注释掉了,因为ps是Shape类,没有声明过area方法,所以编译会报错
ptr->area();

return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜