760 __________Часть II. Программирование на С++

то обращение к любому ее элементу должно происходить с добавлением к имени переменной операции выбора элемента через указатель (->), т. е.

ints -> thingOne = 1;

ints -> thingTwo = 2;

Подобные элементы в C++ часто называются данными-элементами или данными-членами. Эти члены могут быть не только данными, но также и функциями. Как уже неоднократно было отмечено, важная часть философии C++ состоит в том, чтобы оперировать с составными типами данных, связывающими вместе данные и функции.

Замечание

В этой книге структуры struct используются в стиле С, т. е. как набор из простых данных. Это только соглашение, и вам не обязательно его придерживаться.

Одна из трудностей освоения столь выразительного и сложного языка, как C++, состоит в необходимости улавливать разницу между принятыми соглашениями и требованиями языка. Еще одна трудность заключается в достижении необходимого уровня осмысления новых терминов и синонимов. Однако преодоление этих препятствий окупается с лихвой.

Доступ к статическим объектам

Второй тип размещения — статический. Определение переменной без операций разыменования * и new подразумевает ее статическое размещение. Статически размещенные переменные располагаются в стеке программы и их жизненный цикл управляется самой программой.

Возьмем структуру из предыдущего раздела с той единственной разницей, что в определении переменной не участвует операция разыменования, т. е.:

struct INTS ints; // никаких * и вызовов операции new

ints. thingOne =1; // вместо операции -> (доступ через указатель)

ints.thingTwo = 2; // используется . (операция точка)

Для доступа к элементам статически размещенных объектов используется операция точка (.). Второе примечательное отличие состоит в том, что мы обошлись без операции new (это также означает, что и delete вызывать не нужно). '

Развивая свое представление об этих операциях, давайте разберемся с их применением в функциях. Чтобы правильно обеспечить доступ к сложным объектам, передаваемым функциям в качестве аргументов, необходимо определить форму передачи аргументов.