Информатика и технология программирования


Преобразование типов данных и классы


При работе со стандартными типами данных в Си имеют место явные и неявные преобразования их типов. По аналогии для классов также могут быть определены такие операции - они ассоциируются с конструированием объектов класса. Так, если в программе встречается преобразование типа (класса) "yyy" к типу (классу) "xxx", то для его осуществления в классе "xxx" необходим конструктор вида


xxx(yyy &#38);

Сами преобразования типов происходят в тех же самых случаях, что и обычные преобразования базовых типов данных:



-при использовании операции явного преобразования типов;



-при выполнении операции присваивания, если она не переопределена в виде " xxx=yyy" (транслятором создается временный объект класса " xxx", для которого вызывается указанный конструктор и который затем используется в правой части операции присваивания);



-при неявном преобразовании типа формального параметра функции при передаче его по значению (вместо конструктора копирования);



-при неявном преобразовании типа результата функции при передаче его по значению (вместо конструктора копирования);



-при определении объекта класса "xxx" одновременно с его инициализацией объектом класса "yyy" (вместо конструктора копирования)


yyy b;
xxx a = b;

При конструировании объекта класса "xxx" с использованием объекта класса "yyy" естественно должна быть обеспечена доступность необходимых данных последнего (например, через дружественность).

В качестве примера рассмотрим обратное преобразование базового типа long к типу dat -количество дней от начала летоисчисления преобразуется к дате. Здесь же рассмотрим другой класс - man , в котором одним из элементов личной части является дата. Значение этого объекта копируется при преобразовании типа man в тип dat .


//------------------------------------------------------bk73-08.cpp


//------ Преобразование переменной к объекту класса -------


static int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};



Начало  Назад  Вперед



Книжный магазин