Классы и массивы. Инициализация массивов значениями данных из объектов класса. Примеры

Классы и массивы. Инициализация массивов значениями данных из объектов класса. Примеры


Содержание



1. Инициализация массива значениями, которые есть членами данных объекта. Пример

Возможны случаи, когда нужно объединить переменные, которые являются членами объекта класса в массив. В нижеследующем примере инициализируется массив, который в качестве инициализаторов использует члены-данных объекта. На момент объявления, члены-данных объекта должны иметь какие то значения.

Пример определяет класс Radius, в котором объявляются:

  • внутренняя private переменная radius;
  • внутренний private метод CalcValues(), заполняющий значениями public-переменные length, area, volume;
  • общедоступные (public) внутренние переменные класса length, area, volume, содержащие соответствующие значения длины окружности, площади круга и объема шара для радиуса r;
  • конструкторы класса;
  • методы доступа GetR() SetR().

Листинг класса следующий:

// класс, реализующий величину радиуса геометрической фигуры
class Radius
{
    double radius; // переменная, определяющая радиус

    // внутренний метод, формирующий значения переменных length, area, volume
    void CalcValues(void)
    {
        const double pi = 3.141592653589;
        length = 2 * pi * radius;
        area = pi * radius * radius;
volume = 4.0/3.0 * pi * radius * radius * radius;
    }

    public:
    double length; // длина окружности
    double area; // площадь круга
    double volume; // объем шара

    // конструкторы
    Radius()
    {
        radius = 1;
        CalcValues(); // заполнить переменные length, area, volume
    }
    Radius(double radius)
    {
        this->radius = radius;
        CalcValues(); // заполнить переменные length, area, volume
    }

    // методы доступа
    int GetR(void) { return radius; }
    void SetR(double radius)
    {
        this->radius = radius;
        CalcValues(); // заполнить переменные length, area, volume
    }
};

Использование класса в функции main() или другой функции:

Radius r(3); // объект r класса Radius

// инициализация массива V значениями, которые есть членами данных объекта r
double V[] = {
    r.length,
    r.area,
    r.volume
};

double x;
x = V[0]; // x = 18.8496 - длина окружности
x = V[1]; // x = 28.2743 - площадь круга
x = V[2]; // x = 113.097 - объем шара

2. Инициализация массива значениями, которые возвращают объекты класса. Пример

Элементы массива могут быть инициализированы значениями, которые возвращают методы некоторого класса. В примере демонстрируется инициализация массива V значениями, которые возвращают методы класса Radius: Length(), Area(), Volume().

Объявление класса имеет вид;

// класс, который реализует величину радиуса некоторой геометрической фигуры
class Radius
{
    double radius; // переменная, определяющая радиус

    public:
    double Length()
    {
        return (2 * 3.1415 * radius);
    }

    double Area()
    {
        return (3.1415 * radius * radius);
    }

    double Volume()
    {
        return (4.0/3.0 * 3.1415 * radius * radius * radius);
    }

    // конструкторы
    Radius()
    {
        radius = 1;
    }
    Radius(double radius)
    {
        this->radius = radius;
    }

    // методы доступа
    int GetR(void) { return radius; }
    void SetR(double radius)
    {
        this->radius = radius;
    }
};

Использование класса в некотором методе

Radius r(3); // объект r класса Radius

// инициализация массива V значениями, которые возвращают методы объекта класса r
double V[] = {
    r.Length(),
    r.Area(),
    r.Volume()
};

double x;
x = V[0]; // x = 18.8496 - длина окружности
x = V[1]; // x = 28.2743 - площадь круга
x = V[2]; // x = 113.097 - объем шара


Связанные темы