Все еще работая над программой наследования, базовый класс представляет собой форму и есть три производных класса: прямоугольник, круг и квадрат (квадрат получен из Rectangle). Когда я устанавливаю значения данных через соответствующие конструкторы, я получаю ложные значения для членов данных каждого производного класса, когда я их показываю. Я либо не устанавливаю их правильно (думаю), либо я не показываю их правильно. Вот фрагмент кода.Произвольная функция, не возвращающая правильные значения данных
class Shape
{
public:
Shape(double w = 0, double h = 0, double r = 0)
{
width = w;
height = h;
radius = r;
}
virtual double area() = 0;
void display();
protected:
double width;
double height;
double radius;
};
Один производный класс:
class Rectangle : public Shape
{
public:
Rectangle(double w, double h) : Shape(w, h)
{
}
double area();
void display();
};
функция отображения прямоугольника:
double Rectangle::area()
{
return width * height;
}
Вот мой главный():
#include<iostream>
#include "ShapeClass.h"
using namespace std;
int main()
{
Rectangle r(3, 2);
Circle c(3);
Square s(3);
c.display();
s.display();
r.display();
system ("pause");
return 0;
}
Полная ShapeClass.cpp:
#include<iostream>
#include "ShapeClass.h"
using namespace std;
double Shape::area()
{
return (width * height);
}
double Rectangle::area()
{
return width * height;
}
double Circle::area()
{
return (3.14159 * radius * radius);
}
double Square::area()
{
return width * width;
}
void Square::display()
{
cout << "Side length of square: " << width << endl;
cout << "Area of square: " << this->area() << endl;
}
void Circle::display()
{
cout << "Radius of circle: " << radius << endl;
cout << "Area of circle: " << this->area() << endl;
}
void Rectangle::display()
{
cout << "Width of rectangle: " << width << endl;
cout << "Height of rectangle: " << height << endl;
cout << "Area of rectangle: " << this->area() << endl;
}
Что означает ** получение ложных значений **? –
Вы должны быть более конкретными. Вы не указали какой-либо неисправный код и сказали нам, что не так. – 2013-05-10 07:11:22
Это было немного расплывчато: я получаю случайные, очень большие значения - значения мусора, по существу. – user2302335