Cтраница 3
Константный объект не может быть изменен с помощью присваивания, так что он должен получить начальное значение. Если данные-элементы класса объявлены как const, то надо использовать инициализатор элементов, чтобы обеспечить конструктор объекта этого класса начальными значением данных-элементов. [31]
Снова отметим, что данные-элементы hour, minute и second предваряются спецификатором доступа к элементам private. Эти закрытые данные-элементы класса обычно недоступны вне класса ( но, как мы увидим в главе 7, друзья класса могут иметь доступ к закрытым элементам класса. Глубокий смысл такого подхода заключается в том, что истинное представление данных внутри класса не касается клиентов класса. Например, было бы вполне возможно изменить внутреннее представление и представлять, например, время внутри класса как число секунд после полуночи. [32]
Анонимные объединения имеют некоторые ограничения. Они могут иметь только данные-элементы. Все элементы анонимного объединения должны иметь открытый уровень доступа. [33]
![]() |
Объявление класса Time ( часть. из 4. [34] |
Конструктор может вызывать другие функции-элементы класса такие, как функции записи и чтения. Но поскольку конструктор инициализирует объект, данные-элементы могут в этот момент еще не быть в непротиворечивом состоянии. Использование данных-элементов до того, как они получили соответствующие начальные значения, может вызвать ошибки. [35]
После спецификатора доступа к элементам private следуют три целых элемента. Это говорит о том, что эти данные-элементы класса являются доступными только функциям-элементам класса и, как мы увидим в следующей главе, друзьям класса. Обычно данные - элементы перечисляются в части private, а функции-элементы - в части public. Как мы увидим далее, можно иметь функции-элементы private и данные public; последнее не типично и считается в программировании дурным вкусом. [36]
Программа на рис. 7.4 использует классы Employee и Date для демонстрации объектов как элементов других объектов. Элементы birthDate и hireDate являются объектами класса Date, который содержит закрытые данные-элементы month, day и year. Программа создает объект Employee, задает начальные значения его данным-элементам и отображает их на экране. [37]
Каждый объект поддерживает указатель на самого себя, называемый указателем this, который является неявным аргументом во всех ссылках на элементы внутри этого объекта. Указатель this неявно используется при ссылках и на функции-элементы, и на данные-элементы объекта. [38]
Интересно, что функции-элементы printMilitary и printStandard не получают никаких аргументов. Это происходит потому, что функции-элементы неявно знают, что они печатают данные-элементы определенного объекта типа Time, для которого они активизированы. Это делает вызовы функций-элементов более краткими, чем соответствующие вызовы функций в процедурном программировании. Это уменьшает также вероятность передачи неверных аргументов, неверных типов аргументов или неверного количества аргументов. [39]
На рис. 9.8 часть 2 представлены определения функций-элементов класса Point, а на рис. 9.8 часть 3 представлена программа драйвер класса Point. Заметим, что main должна использовать функции доступа getX и getY, чтобы читать значения защищенных данных-элементов х и у; напомним, что защищенные данные-элементы доступны только элементам и друзьям их класса и производного класса. [40]
Вы, возможно, носите на запястье один из наиболее типичных во всем мире объектов - часы. Подумайте, как каждый из следующих терминов и концепций приложимы к понятию часы: объект, атрибуты, поведение, класс, наследование ( рассмотрите, например, будильник), абстракция, моделирование, сообщения, инкапсуляция, интерфейс, скрытие информации, данные-элементы и функции-элементы. [41]
После создания объекта его элементы могут быть инициализированы с помощью функции конструктор. Данные-элементы класса не могут получать начальные значения в определении класса. Они либо должны получить эти значения в конструкторе класса, либо их значения можно установить позже, после создания объекта. Конструкторы не могут указывать типы возвращаемых значений или возвращать какие-то значения. [42]
Закрытые элементы раздела private доступны для функций-элементов этой структуры и для других кодов, помещенных в тот же модуль. Закрытыми объявляются вспомогательные данные-элементы и функции, не представляющие интереса для пользователя, но доступные для использования в других структурах и классах, описанных в данном модуле. [43]
Строго закрытые элементы раздела strict private доступны только для функций-элементов этой структуры. Ни из какого иного код ни в этом, ни в других модулях получить доступ к строго закрытым элементам структуры невозможно. Строго закрытыми объявляются какие-то вспомогательные данные-элементы, не представляющие интереса для пользователя, а также вспомогательные функции ( утилиты), требующиеся для работы основных функций-элементов структуры. [44]
Она называется конструктором этого класса. Конструктор - это специальная функция-элемент, которая инициализирует данные-элементы объекта этого класса. Конструктор класса вызывается автоматически при создании объекта этого класса. Мы увидим, что обычно класс имеет несколько конструкторов; это достигается посредством перегрузки функции. [45]