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 вызывать не нужно). '
Развивая свое представление об этих операциях, давайте разберемся с их применением в функциях. Чтобы правильно обеспечить доступ к сложным объектам, передаваемым функциям в качестве аргументов, необходимо определить форму передачи аргументов.