首先要理解啥是纯虚函数?
就是后面有个 = 0;
意思就是Graph类里的area应该这么写:
virtual float area() = 0;
另外你的问题,贴代码的时候应该选择右上角的代码->C/C++,像这样:
#include
using namespace std;
class Graph
{
float x, y;
public:
Graph(float xx, float yy)
{
x = xx;
y = yy;
}
virtual float area() = 0;
};
class Rect: public Graph
{
float length, width, high;
public:
Rect(float x,float y):Graph(x,y)
{
length=x;
width=y;
}
float area( )
{
return length*width;
}
};
class Circle: public Graph
{
double radius;
public:
Circle(float x,float y):Graph(x,y)
{
radius=sqrt(x*x+y*y);
}
double area( ){
return 3.1416*radius*radius;
}
};
void main( )
{
Rect s1(10, 10);
Circle s2(10, 10);
cout <<"矩形面积="<< s1.area( )<< endl; //调用矩形的area( )
cout <<"圆的面积="<< s2.area( )<< endl; //调用圆类的area( )
}
//问题:修改程序, 把基类的area改为纯虚函数, 并增加一个纯虚函数display, 用它来显示面积。并结合本题目说明纯虚函数的作用。
把area改成纯虚函数以后,不能在基类Graph里实现它,但是子类一定要实现它。
所以main里不能调用Graph的area函数