/*l 设计Shape类,它是一个抽象基类l Shape类中的函数成员是print;l Shape类派生出TwoDimensionalShape(二维形状类)和ThreeDimensionalShape(三维形状类),这两个类也是抽象类l TwoDimensionalShape包含虚函数areal ThreeDimensionalShape中包含虚函数areah和volumel 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 using namespace std;#define PI 3.14class 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;}