float 用cout输出怎么总是负数
#include<iostream>
using namespace std;
class Shape
{public:
virtual float area(){return 0.0;};
virtual void shapename() const=0;
virtual void printArea(){};
};
class Circle:public Shape
{
public:
Circle(float a){r=a;}
virtual float area();
virtual void shapename() const {cout<<"Circle:"<<endl;}
virtual void pintArea();
private:
float x;
float r;
};
void Circle::pintArea()
{
shapename();
cout<<x<<endl;
}
float Circle::area()
{
x=3.14*r*r;
return x;
}
class Rectangle:public Shape
{
public:
Rectangle(float a,float b){x=a;y=b;}
virtual float area();
virtual void shapename() const {cout<<"Rectangle:"<<endl;}
virtual void pintArea();
private:
float z,x,y;
};
void Rectangle::pintArea()
{
shapename();
cout<<z<<endl;
}
float Rectangle::area()
{
z=x*y;
return z;
}
int main()
{
Circle c1(5);
c1.pintArea();
Rectangle r1(2,2);
r1.pintArea();
return 0;
}
为什么输出结果是 负数
百思不得其解
[解决办法]
哥 打印x 请调用x的赋值函数 area()
同理得证
[解决办法]
你的面积x又没被计算过
Circle c1(5);
c1.area();
c1.pintArea();
[解决办法]
#include<iostream>using namespace std;class Shape{public:virtual float area(){return 0.0;};virtual void shapename() const=0;virtual void printArea(){};};class Circle:public Shape{public: Circle(float a){r=a;} virtual float area(); virtual void shapename() const {cout<<"Circle:"<<endl;} virtual void pintArea();private: float x; float r;};void Circle::pintArea(){ area(); shapename(); cout<<x<<endl;}float Circle::area(){ x=3.14*r*r; return x;}class Rectangle:public Shape{public: Rectangle(float a,float b){x=a;y=b;} virtual float area(); virtual void shapename() const {cout<<"Rectangle:"<<endl;} virtual void pintArea();private: float z,x,y;};void Rectangle::pintArea(){ area(); shapename(); cout<<z<<endl;}float Rectangle::area(){ z=x*y; return z;}int main(){ Circle c1(5.0); c1.pintArea(); Rectangle r1(2,2); r1.pintArea(); return 0;}