你的程序的主要问题是没有分清类和对象的区别,对于指针p是指向对象的,而不是指向类的
你的C++程序我帮你改完了,你看看吧(改动的地方见注释)
#include
using namespace std;
class Firgure
{protected:
float x_size;
float y_size;
public:
Firgure(float a,float b)
{x_size=a;y_size=b;}
virtual float area()const=0;
};
class Triangle:public Firgure
{public:
Triangle(float a,float b): Firgure(a,b){}
virtual float area() const
{return 1.0/2*x_size*y_size;} //这里把1/2改成1.0/2
};
class Rectangle:public Firgure
{
public:
Rectangle(float a,float b): Firgure(a,b){}
virtual float area() const
{return x_size*y_size;}
};
class Circle:public Firgure
{public:
Circle(float a,float b): Firgure(a,b){}
virtual float area() const
{return 3.14*x_size*x_size;}
};
int main()
{Firgure *p;
Triangle a1(3,6);Rectangle b1(5,8);Circle c1(2,0);
p=&a1; //这里把p=&Triangle;改成p=&a1;
//p->area();//这里去掉这句
cout<<"三角形的面积为"<area()< p=&b1; //这里把p=&Rectangle;改成p=&b1;
//p->area();//这里去掉这句
cout<<"矩形的面积为"<area()< p=&c1; //这里把p=&Triangle;改成p=&c1;
//p->Circle();//这里去掉这句
cout<<"圆的面积为"<area()< return 0;
}