Справочное руководство по C++


Описания классов


Класс специфицирует тип. Его имя становится typedef-имя (см. ), которое может быть использовано даже внутри самого спецификатора класса. Объекты класса состоят из последовательности членов.

спецификатор_класса: заголовок_класса { список_членов opt } заголовок_класса { список_членов opt public : список_членов opt }

заголовок_класса: агрег идентификатор opt агрег идентификатор opt : public opt typedef-имя агрег: class struct union

Структура является классом, все члены которого общие; см. . Объединение является классом, содержащим в каждый момент только один член; см. . Список членов может описывать члены вида: данные, функция, класс, определение типа, перечисление и поле. Поля обсуждаются в . Список членов может также содержать описания, регулирующие видимость имен членов; см. .

список_членов: описание_члена список_членов opt описание_члена: спецификаторы_описания opt описатель_члена; описатель_члена: описатель идентификатор opt : константное_выражение

Члены, являющиеся классовыми объектами, должны быть объектами предварительно полностью описанных классов. В частности, класс cl не может содержать объект класса cl, но он может содержать указатель на объект класса cl.

Имена объектов в различных классах не конфликтуют между собой и с обычными переменными.

Вот простой пример описания структуры:

struct tnode { char tword[20]; int count; tnode *left; tnode *right; };

содержащей массив из 20 символов, целое и два указателя на такие же структуры. Если было дано такое описание, то описание

tnode s, *sp

описывает s как структуру данного сорта и sp как указатель на структуру данного сорта. При наличии этих описаний выражение

sp-count

ссылается на поле count структуры, на которую указывает sp;

s.left

ссылается на указатель левого поддерева структуры s; а

s.right-tword[0]

ссылается на первый символ члена tword правого поддерева структуры s.



Содержание раздела