|
|
Класс есть тип. Его имя используется как имя-класса ($$R.9.1), т.е. становится зарезервированным словом в его области видимости.
имя-класса:
идентификатор
Для образования конструкции имя-класса используются спецификации-класса и спецификации-сложного-типа ($$R.7.1.6). Объект класса состоит из последовательности (возможно пустой) членов.
спецификация-класса:
заголовок-класса { список-членов opt }
заголовок-класса:
служебное-слово-класса идентификатор opt спец-базовых opt
служебное-слово-класса имя-класса спец-базовых opt
служебное-слово-класса:
class
struct
union
Имя класса можно использовать в качестве конструкции имя-класса
даже в списке-членов самого этого класса. Обычно спецификацию-класса
называют описанием класса. Класс считается определенным, как только
появится спецификация-класса, несмотря на то, что его функции-члены
могут быть еще неопределены.
Объекты пустого класса имеют ненулевой размер.
Объекты типа класс можно присваивать, передавать в качестве
параметров функций и получать в качестве значения, возвращаемого
функцией (за исключением объектов тех классов, для которых копирование
ограничено, см. $$R.12.8). Другие возможные операции, такие, как
сравнение на равенство, могут определяться пользователем, см. $$R.13.4.
Структурой называется класс, описанный со служебным-словом-класса
struct; ее члены и базовые классы ($$R.10) считаются общими по
определению ($$R.11). Объединением называется класс, описанный со
служебным-словом-класса union; его члены считаются общими по
определению, и в любой момент времени объединение содержит только
один член ($$R.9.5).
| |