求C++大神

2025-06-24 18:18:12
推荐回答(1个)
回答1:

首先要理解啥是纯虚函数?

就是后面有个 = 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函数