Cтраница 3
Насколько часто в программах используются указатели на функции и указатели на функции-члены. [31]
В каждом из примеров классов, приведенных в этой главе, функции-члены полностью определялись внутри тела определения класса. В качестве альтернативы можно объявить функцию-член внутри класса, а определить ее вне класса. [32]
Первое, что необходимо знать: при закрытом наследовании все переменные и функции-члены базового класса трактуются так, как если бы они были объявлены закрытыми, независимо от установок доступа в базовом классе. Таким образом, для любой функции, не являющейся функцией-членом PartsCatalog, недоступны функции, унаследованные из PartsList. Это очень важно: закрытое наследование не передает в производный класс интерфейс базового класса. [33]
![]() |
Классы главной программы и исходные файлы. [34] |
Четыре главных класса обращаются друг к другу и обмениваются данными, вызывая открытые функции-члены другого класса и посылая сообщения. Сообщения будут описаны в гл. [35]
Доступ к статическим функциям-членам можно получить, либо вызывая их из объектов класса как обычные функции-члены, либо вызывая их без объектов, явно указав в этом случав имя класса. [36]
Кроме того, вы узнали, как объявлять и использовать указатели на обычные функции и на функции-члены, а также познакомились с созданием массивов этих указателей и с передачей указателей на функции в другие функции. [37]
ЛЮШОЕП нрсысци при выло ншши программы, поскольку каждый вызов диргу пьной функции [ ptGyct пира тени л к ТУ блине указателей на функции-члены. [38]
Первый параметр, передаваемый в функцию get line, задает имя принимающего буфера, а второй - размер этого буфера; getline называют функцией-членом объекта cin ( функции-члены рассмотрены в гл. [39]
К сожалению, использование абстрактных классов влечет за собой значительный дополнительный расход машинного времени при выполнении программы, поскольку каждый вызов виртуальной функции требует обращения к таблице указателей на функции-члены. Более того, компиляторы обладают намного меньшими возможностями в отношении оптимизации кода для абстрактных классов. Так как рассматриваемые в книге алгоритмы и структуры данных часто находятся в частях системы, критичных к производительности, возможно, упомянутая цена за гибкость, предоставляемую абстрактными классами, окажется слишком большой, чтобы ее платить. [40]
При ватными членами могут быть как данные, тах н функции: в программе 4 1 приватными я шлются только данные, но далее мы увидим многочисленные примеры классов, в которых приватными будут также функции-члены, По умолчанию члены классов являются рнват-нымн, тогда как члены структур - обшедоступными. [41]
Для мно ] их прн юж н й возможность inucFtcmiH рсалиэгший является обязательной, Например, предположим мто созаасэся uporpaKfMitoe обеспечение или компании которой необходимо ойpiifitfтыкать списки иочтонык идрссоп вЕотсшшсиывьЕХ клиентов, С комошью классов C можно определить функции, которые по-лгплнкгг кивк-снтскиы программам манипулировать у дяннммм без непосредственною лостула к ним, Мы создаем функции-члены, иоэ пршцающис требуемые давшие. Самос вяжи о и такой орс ЛЕввв лиии Л1 стнизастсд EL том, что те ж самые миентскне программы можно использовать даже в том cjy-iac, если ввйтр йустсн изменить формат понтоны ж а фсс: ов. [42]
Целочисленные значения хранятся в закрытом массиве Buffer, а специально написанный конструктор по умолчанию инициализирует нулями все элементы этого массива. Функции-члены Setltem и Getltem используются для присваивания или получения значений указанных элементов. [43]
![]() |
Доступ к членам базового класса. [44] |
Функции-члены обычно определяются вне класса. Небольшие функции-члены могут быть определены внутри класса. [45]