Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vsyo_33.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.88 Mб
Скачать

I.4. Классы, секции доступа. Данные-члены, функции-члены, дружественные функции.

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

Члены класса описываются внутри { }, перед которыми ставится ключевое слово class и имя класса:

сlass имя {

описание членов;

};

Данными-членами класса могут быть переменные и массивы различных типов, указатели, перечисления, поля бит и т.д. описание каждого данного-члена приводится с указанием его класса памяти, типа, имени, размерности и размеров измерений (для массивов), * (для указателей) и т.д. Если данным-членом является поле бит, то за описанием через двоеточие приводится ширина поля, а сам член имеет тип int.

Члены класса группируются по секциям, перед которыми приводятся метки доступа к секциям. По уровню доступа секции могут быть закрытыми, защищенными и открытыми. Перед ними ставятся соответственно метки доступа private (закрытая), protected (защищенная), public (открытая). Каждый из этих типов секций может приводиться в любом месте и любое число раз. Если нек.закрытая секция приведена в начале описания класса, то метка private перед нею может опускаться. Любая секция может содержать и данные-члены, и функции-члены. Описание класса может иметь, например, такой вид: class имя {

описания членов закрытой секции

public:

описание членов открытой секции

protected:

описание членов защищенной секции

private:

описание членов закрытой секции

public:

описание членов открытой секции

…………………

};

Каждая функция-член может приводиться в классе полностью, своим определением или прототипом. В последнем случае определение функции-члена приводится вне класса, после его описания.

Введем понятие дружественной функции. Отдельные функции программы, не входящие в данный класс, могут объявляться дружественными классу. Внутри класса приводятся лишь прототипы этих функций, но в отличие от функций самого класса этим прототипам предшествует спецификатор friend.

Друзьями класса могут быть обычные функции программы, отдельные функции-члены другого класса. Друзьями класса могут быть одновременно все функции-члены другого, дружественного класса.

Данные-члены и функции-члены, приведенные в секциях private класса, доступны функциям-членам, а также дружественным функциям этого класса. Члены секций protected доступны функциям-членам, дружественным функциям этого класса и функциям-членам классов, производных от этого класса. Члены секций public доступны любым функциям в соответствующих пределах видимости переменных, с помощью которых происходит их вызов.

I.5. Объекты, их массивы, указатели на них.

Переменные, которые содержат функции, называются объектами. После определения класса объекты типа этого класса, массивы объектов и указатели на классы описываются с использованием имени класса как спецификатора типа. Так, если определен класс А, то описание объекта s, массива объектов tx типа А из 5 элементов и указателя q на тип А можно описать так: A s, tx[5], *q;

Определение объектов, их массивов и указателей на класс может приводиться и при описании класса за закрывающейся }.

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

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

Классы в зависимости от места описания могут быть локальными и внешними. Обычно лок.классы не используются и, как правило, являются внешними. Что же касается объектов, массивов объектов и указателей на классы, то они, как обычно, в зависимости от места описания, могут быть внешними и локальными.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]