Использование классов при работе с векторами и матрицами (Лабораторная работа № 2), страница 5

     Y.InpVec(0);

// суммирование векторов и вывод результата

Z=X+Y;

     clrscr();

     cout<<endl<<"Вектор X:"<<endl<<endl;

     X.OutVec(0,5,2);

     cout<<endl<<"Вектор Y:"<<endl<<endl;

     Y.OutVec(0,5,2);

     cout<<endl<<"X + Y = "<<endl<<endl;

Z.OutVec(0,5,2);

     getch();

// вычитание векторов и вывод результата

Z=X-Y;

     clrscr();

     cout<<endl<<"Вектор X:"<<endl<<endl;

     X.OutVec(0,5,2);

     cout<<endl<<"Вектор Y:"<<endl<<endl;

     Y.OutVec(0,5,2);

     cout<<endl<<"X - Y = "<<endl<<endl;

Z.OutVec(0,5,2);

     getch();

// умножение векторов и вывод результата

S=X*Y;

     clrscr();

     cout<<endl<<"Вектор X:"<<endl<<endl;

     X.OutVec(0,5,2);

     cout<<endl<<"Вектор Y:"<<endl<<endl;

     Y.OutVec(0,5,2);

     cout<<endl<<"X*Y = "<<S<<endl;

getch();

}

4. Конструкторы класса

Класс может иметь один или несколько конструкторов. Конструктор – это специальный метод, который автоматически запускается в момент объявления объекта класса. Обычно конструктор используется для инициализации объектов, т.е. задания их данным начальных значений. Идентификатор конструктора совпадает с именем класса. Если класс имеет более одного конструктора, то они должны различаться списком формальных параметров. В списках формальных параметров можно использовать механизм задания параметров по умолчанию.

Листинг 9

#include "define.h"

class TVector

{

  private: // закрытый раздел

// данные класса

int n;

     Vector V;

public:  // открытый раздел

// конструкторы класса

TVector(int=MatVecSize, double=0.0);

     TVector(int, double, double);

// методыкласса

     void InpVec(int);

     void OutVec(int, int, int);

     void SetVec(int,  Vector);

     void GetVec(int&, Vector);

     TVector AddVec(TVector, TVector);

     TVector SubVec(TVector, TVector);

double MultVec(TVector, TVector);

  };

// файлреализациикласса TVector

#include <iostream.h>

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <limits.h>

#include "tvector.h"

// конструкторыкласса

TVector::TVector(int comp, double val)

// заполнение вектора заданными значениями

{

// описание данных

inti;

// заполнение

n=comp;

     for (i=1; i<=n; i++)

       V[i]=val;

}

TVector::TVector(int comp, double Vmin, double Vmax)

// заполнение вектора случайными значениями

{

// описание данных

int i;

// заполнение

     n=comp;

     randomize();

     for (i=1; i<=n; i++)

       V[i]=Vmin+(Vmax-Vmin)*double(rand())/INT_MAX;

}

...

В приводимом на листинге 9 примере класс TVector снабжен двумя конструкторами. Первый заполняет заданное число компонентов comp заданными значениями val. В его списке параметров по умолчанию используются значения comp=MatVecSize и Var=0.0 . Если описать объект как    TVectorX;, то весь массив от элемента с индексом 1 до элемента с индексом MatVecSize будут заполнены нулями (используются значения по умолчанию). Если объект описывается как      TVectorX(5,1.0);, то 5 компонентов вектора будут заполнены единицами.

Второй конструктор заполняет comp компонентов вектора случайными значениями, лежащими в интервале от Vmin до Vmax . Выполнение этого конструктора вызывается следующим образом: TVectorX(10,-10.0,10.0);. При этом 10 компонентов вектора будут заполнены случайными значениями от -10 до +10.