Hi gang,

Yet another inheritance problem. Can anyone tell me why, for the below code, the length_ variable of my Cylinder object is being output when I call it with Cylinder::disp() as -9.25596e+061? Can't figure this one out!

Thanks!

Code:

#include <iostream>
#include <cmath>
using namespace std;
class Point
{
protected:
double x_, y_;
public:
Point(double, double);
double area();
double distance(Point&, Point&);
};
double Point::area()
{
return 0;
}
Point::Point(double XX, double YY)
{
x_ = XX;
y_ = YY;
}
double Point::distance(Point& point1, Point& point2)
{
return sqrt(pow((point2.x_-point1.x_), 2)+pow((point2.y_-point1.y_), 2));
}
class Circle : public Point
{
protected:
double radius_;
public:
Circle(double rad_, double x_, double y_) : radius_(rad_), Point(x_, y_){}
double area();
};
double Circle::area()
{
return radius_*radius_*3.1419;
}
class Cylinder : public Circle
{
protected:
double length_;
public:
Cylinder(double l_, double r_, double x_, double y_) : length_(l_), Circle(radius_, x_, y_) {}
double area();
void disp();
};
double Cylinder::area()
{
return length_*radius_*x_*y_;
}
void Cylinder::disp()
{
cout << length_ << " " << radius_ << " " << x_ << " " << y_ << endl;
}
int main()
{
Point myPoint(3.1, 4.2);
Circle myCircle(4.3, 3.2, 2.3);
Cylinder myCylinder(1.3, 3.1, 3.4, 3.2);
myCylinder.disp();
cout << "The area of myPoint is " << myPoint.area() << endl;
cout << "The area of myCircle is " << myCircle.area() << endl;
cout << "The area of myCylinder is " << myCylinder.area() << endl;
return 0;
}