ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 4) онлайн
Другие возможности структур
Структуры обладают достаточно широким набором возможностей. Рассмотрим некоторые из них.
Инициализация полей структуры
Следующий пример демонстрирует способ, при помощи которого можно инициа- лизировать поля предварительно определенной структурной переменной. В про- грамме используются две структурные переменные.

Рис. 4.4. Операция «точка»
// partinit.cpp
// инициализация структурных переменных
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////
struct part // объявление структуры
{
int modelnumber; // номер модели изделия
int partnumber; // номер детали
float cost; // стоимость детали
};
//////////////////////////////////////////////////////////
int main()
{ // инициализация переменной
part part1 = {6244,373,217.55F };
part part2; // объявление переменной
// вывод полей первой переменной
cout << "Модель " << part1.modelnumber;
cout << ", деталь " << part1.partnumber;
cout << ", стоимость $" << part1.cost << endl;
part2 = part1; // присваивание структурных переменных
// вывод полей второй переменной cout << "Модель " << part2. modelnumber; cout << ", деталь " << part2.partnumber; cout << ", стоимость $" << part2.cost <<endl; return 0;
}
В приведенной программе определены две переменные типа part: part1 и part2. После того как поля переменной part1 инициализированы, происходит вывод их значений на экран, затем значение переменной part1 присваивается переменной part2, и значения ее полей также выводятся на экран. Результат работы про- граммы выглядит следующим образом:
Модель 6244, часть 373, цена $217.55 Модель 6244, часть 373, цена $217.55
Неудивительно, что обе выведенные строки идентичны, поскольку значение второй переменной было присвоено первой переменной.
Инициализация полей переменной part1 производится в момент ее опреде- ления:
part part1 = {6244,373,217.55F };
Значения, которые присваиваются полям структурной переменной, заключе- ны в фигурные скобки и разделены запятыми. Первая из величин присваивает- ся первому полю, вторая — второму полю и т. д.
Присваивание структурных переменных
Как мы видим из программы PARTINIT, мы можем присваивать значение одной структурной переменной другой структурной переменной:
part2 = part1;
Значение каждого поля переменной part1 присваивается соответствующему полю переменной part2. Поскольку в больших структурах число полей иногда мо- жет измеряться десятками, для выполнения присваивания структурных перемен- ных компилятору может потребоваться проделать большое количество работы.
Обратите внимание на то, что операция присваивания может быть выполне- на только над переменными, имеющими один и тот же тип. В случае попытки выполнить операцию присваивания над переменными разных типов компиля- тор выдаст сообщение об ошибке.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
