Загрузка данных


#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;
    }
};

void main()
{
    setlocale(0, "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;
}