#include <iostream>
using namespace std;
class Cube
{
double side; // длина ребра куба (private по умолчанию)
double volume; // объем куба (private по умолчанию)
public:
// Метод для установки длины ребра
void setSide(double s)
{
side = s;
}
// Метод для получения длины ребра
double getSide()
{
return side;
}
// Метод для вычисления объема куба
void calcVolume()
{
volume = side * side * side;
}
// Метод для получения объема
double getVolume()
{
return volume;
}
// Метод для вывода результата на экран
void showVolume()
{
cout << "Ребро куба: " << side << endl;
cout << "Объем куба: " << volume << endl;
}
};
int main()
{
setlocale(LC_ALL, "Rus");
// === Способ 1: прямое обращение через объект (оператор .) ===
cout << "--- Прямое обращение (через объект) ---" << endl;
Cube kub1;
double a;
cout << "Введите длину ребра куба: ";
cin >> a;
kub1.setSide(a); // прямое обращение через точку
kub1.calcVolume(); // прямое обращение через точку
kub1.showVolume(); // прямое обращение через точку
cout << endl;
// === Способ 2: косвенное обращение через указатель (оператор ->) ===
cout << "--- Косвенное обращение (через указатель) ---" << endl;
Cube kub2;
Cube *ptr = &kub2; // указатель на объект
double b;
cout << "Введите длину ребра куба: ";
cin >> b;
ptr->setSide(b); // косвенное обращение через ->
ptr->calcVolume(); // косвенное обращение через ->
ptr->showVolume(); // косвенное обращение через ->
cout << endl;
// === Дополнительно: вывод через методы-геттеры ===
cout << "--- Вывод через геттеры ---" << endl;
cout << "Ребро: " << ptr->getSide()
<< ", Объем: " << ptr->getVolume() << endl;
return 0;
}