class rectangle : public figure {
public:
void show_area() {
cout << "Прямоугольник с размерами ";
cout << x << " x " << у;
cout << " имеет площадь ";
cout << х * у << ".\n";
}
};
int main()
{
figure *р; // создаем указатель на базовый тип
triangle t; // создаем объекты производных типов
rectangle r;
р = &t
p->set_dim(10.0, 5.0);
p->show_area();
р = &r
p->set_dim(10.0, 5.0);
p->show_area();
return 0;
}
Вот как выглядят результаты выполнения этой программы.
Треугольник с высотой 10 и основанием 5 имеет площадь 25.
Прямоугольник с размерами 10 х 5 имеет площадь 50.
В этой программе обратите внимание на то, что при работе с классами
Как вы думаете, используя объявление класса
class circle : public figure {
public:
void show_area() {
cout << "Круг с радиусом ";
cout << x;
cout << " имеет площадь ";
cout << 3.14 * x * x;
}
};
Прежде чем опробовать класс
Есть два способа решить эту проблему. Первый (и одновременно наихудшим) состоит в том, что мы могли бы, работая с объектом класса
Есть более удачный способ решения этой проблемы, который заключается в предоставлении параметру функции
#include
using namespace std;
class figure {
protected:
double x, y;
public:
void set_dim(double i, double j=0) {
x = i;
у = j;
}
virtual void show_area() {
cout << "Для этого класса выражение вычисления ";
cout << "площади не определено.\n";
}
};
class triangle : public figure {
public:
void show_area() {
cout << "Треугольник с высотой ";
cout << x << " и основанием " << у;
cout << " имеет площадь ";
cout << х * 0.5 * у << ".\n";
}
};
class rectangle : public figure {
public:
void show_area() {
cout << "Прямоугольник с размерами ";
cout << x << " x " << у;
cout << " имеет площадь ";
cout << х * у << ".\n";
}
};
class circle : public figure {
public:
void show_area() {
cout << "Круг с радиусом ";
cout << x;
cout << " имеет площадь ";
cout << 3.14 * x * x << ".\n";
}
};
int main()
{