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

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