CC20020419 2022-04-19 16:25 采纳率: 85%
浏览 28
已结题

面积计算,为什么这段程序输出是空白(语言-c++)


#include<bits/stdc++.h>
using namespace std;
class Shape{
    public:
    virtual    double Area();
    protected:
        double area;
};
class Circle:public Shape{
    public:
        Circle(int a);
        double Area();
    protected:
        int radius;
        double PI=3.14159;
       
        
};
class Rectangle:public Shape{
    public:
        Rectangle(int width1,int height1);
        double Area();
    protected:
        int width;
        int height;
};
double Shape::Area(){return area;}
Circle::Circle(int a){
    radius=a;
}
double Circle::Area(){
     area=PI*radius*radius;
}
Rectangle::Rectangle(int width1,int height1){
    width=width1;
    height=height1;
}
double Rectangle::Area(){
     area=width*height;
}
int main(){
    
    Shape *p[4];
    p[0]=new Circle(1);
    p[1]=new Circle(2);
    p[2]=new Rectangle(1,2);
    p[3]=new Rectangle(3,4);
    for(int i=0;i++;i<4){
        cout<<p[i]->Area()<<endl;
    }
    delete p;
    
}

样例输出
3.14
12.56
2
12

  • 写回答

2条回答 默认 最新

  • bostonAlen 2022-04-19 22:21
    关注

    new 和 delete得成对使用
    另外p是一个数组,如果你使用Shape *p = new Shape[4];的形式创建了对象
    那么你必须使用delete [] p; 释放空间

    int main() {
    
        Shape *p[4];
        p[0] = new Circle(1);
        p[1] = new Circle(2);
        p[2] = new Rectangle(1, 2);
        p[3] = new Rectangle(3, 4);
        for (int i = 0; i < 4; i++ ) {
            cout << p[i]->Area() << endl;
        }
        delete p[0];
        delete p[1];
        delete p[2];
        delete p[3];
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 已采纳回答 4月22日
  • 创建了问题 4月19日

悬赏问题

  • ¥15 主机可以ping通路由器但是连不上网怎么办
  • ¥15 数据库一张以时间排好序的表中,找出多次相邻的那些行
  • ¥50 关于DynamoRIO处理多线程程序时候的问题
  • ¥15 kubeadm部署k8s出错
  • ¥15 Abaqus打不开cae文件怎么办?
  • ¥20 双系统开机引导中windows系统消失问题?
  • ¥15 小程序准备上线,软件开发公司需要提供哪些资料给甲方
  • ¥15 关于生产日期批次退货退款,库存回退的问题
  • ¥15 手机应用的时间可以修改吗
  • ¥15 docker 运行OPEN-webui异常