旭辉夜夜访 2022-03-03 20:52 采纳率: 100%
浏览 7
已结题

C++派生与继承问题输出有误

 输出多了9.26841e-315,我不知道什么原因。


#include<iostream>
#include<cmath>
using namespace std;
const double pi=3.14;
class Shape
{
public:
       virtual double Area()=0;
       virtual double Perimeter() = 0;
};
class Circle:public Shape
{
public:
       Circle(double rr);
       double Radius();  //获取私有量r值,以便为两个子类所使用
       double Area();
       double Perimeter();
private:
       double r; //圆的半径(也可以将Radius函数去掉,r定义为protected属性,这样在子类中可以直接使用r)
};

class In_Square:public Circle
{
public:
       In_Square(double rr);
       double Area();
       double Perimeter();
};
class Ex_Square:public Circle
{
public:
       Ex_Square(double r);
       double Area();
       double Perimeter();
};
int main()
{
      Shape *ptr;
       double r;
       cin>>r;
       ptr=new Circle(r);
       cout<<"Circle's area:"<<ptr->Area()<<endl;
       cout<<"Circle's perimeter:"<<ptr->Perimeter()<<endl;
       ptr=new In_Square(r);
    cout<<"In_Square's area:"<<ptr->Area()<<endl;
       cout<<"In_Square's perimeter:"<<ptr->Perimeter()<<endl;
       ptr=new Ex_Square(r);
    cout<<"Ex_Square's area:"<<ptr->Area()<<endl;
       cout<<"Ex_Square's perimeter:"<<ptr->Perimeter()<<endl;
       return 0;
}

Circle::Circle(double rr)
{
       r=rr;
}
double Circle::Radius()
{
       return r;
}
double Circle::Area()
{
       cout<<pi*r*r;
}
double Circle::Perimeter()
{
       cout<<2*pi*r;
}
In_Square::In_Square(double rr) :Circle(rr)
{

}

double In_Square::Area()
{
        double rr;
        rr=Circle::Radius();
        cout<<2*rr*rr;
}

double In_Square::Perimeter()
{
        double rr;
        rr=Circle::Radius();
        cout<<sqrt(2*rr*rr)*4;
}

Ex_Square::Ex_Square(double r) :Circle(r)
{

}

double Ex_Square::Area()
{
         double r;
         r=Circle::Radius();
         cout<<4*r*r;
}

double Ex_Square::Perimeter()
{
         double r;
         r=Circle::Radius();
         cout<<8*r;
}

img

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-03-03 21:15
    关注

    Area(), Perimeter()函数里的cout <<改为return

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月12日
  • 已采纳回答 3月4日
  • 创建了问题 3月3日

悬赏问题

  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥50 我撰写的python爬虫爬不了 要爬的网址有反爬机制
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等