Главная->Інформатика та програмування->Содержание->Другие возможности структур

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В 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. Поскольку в больших структурах число полей иногда мо- жет измеряться десятками, для выполнения присваивания структурных перемен- ных компилятору может потребоваться проделать большое количество работы.

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

 

8