Читаем Справочное руководство по C++ полностью

struct S {

 S();

 ~S();

};


typedef struct S T;

S a = T(); // нормально

struct T* p; // ошибка

R.7.1.4 Спецификация шаблона типа

Спецификация шаблона типа используется для задания семейства типов или функций (см. §R.14).

R.7.1.5 Спецификация friend

Спецификация friend используется для задания доступа к членам класса (см. §R.11.4).

R.7.1.6 Спецификация типа

К спецификации типа относятся:

спецификация-типа:

 имя-простого-типа

 спецификация-класса

 спецификация-перечисления

 спецификация-сложного-типа

 :: имя-класса

 const

 volatile

При описании объекта служебные слова const и volatile можно добавить к любой законной спецификации-типа. Во всех других случаях в описании может присутствовать не более одной спецификации-типа. Объект со спецификацией const можно инициализировать, но его значение не должно изменяться в дальнейшем. Объект со спецификацией const, если только он не был явно описан как extern, не подлежит внешнему связыванию и должен инициализироваться (§R.8.4, §R.12.1). Целое со спецификацией const, инициализированное выражением-константой, может использоваться в выражении-константе (§R.5.19). Каждый элемент массива со спецификацией const имеет ту же спецификацию, а каждый нестатический член, не являющийся функцией, из объекта класса со спецификацией const сам считается const (§R.9.3.1). Объект типа без конструктора или деструктора, который имеет спецификацию const, может быть помещен в память, доступную только по чтению. Попытка записи в любую часть такого объекта или приведет к особой адресной ситуации, или пройдет бесследно, как если бы объект не имел спецификации const.

Не существует не зависящего от реализации объяснения объектов со спецификацией volatile. Она служит подсказкой транслятору избегать слишком активной оптимизации, связанной с этим объектом, поскольку значение объекта может изменяться способами, скрытыми от транслятора. Каждый элемент массива со спецификацией volatile имеет ту же спецификацию и каждый нестатический член, не являющийся функцией, из объекта класса со спецификацией volatile сам считается volatile (§R.9.3.1).

Если спецификация-типа отсутствует в описании, она считается заданной как int.

имя-простого-типа:

 полное-имя-класса

 уточненное-имя-типа

 char

 short

 int

 long

 signed

 unsigned

 float

 double

 void

Вместе с int нельзя задавать более одного служебного слова long или short. Они могут использоваться и поодиночке, тогда считается, что тип есть int. Служебное слово long может появиться вместе с double. Вместе с char, short, int или long нельзя задавать более одного служебного слова signed или unsigned. Они могут использоваться и поодиночке, тогда считается, что тип есть int. Спецификация signed указывает, что объекты типа char и битовые поля являются знаковыми, для других целочисленных типов эта спецификация избыточна.

Конструкции спецификация-класса и спецификация-перечисления определяются в §R.9 и §R.7.2 соответственно.

спецификация-сложного-типа:

 служебное-слово-класса имя-класса

 служебное-слово-класса идентификатор

служебное-слово-класса:

 class

 struct

 union

Если задан идентификатор, спецификация-сложного-типа описывает его как имя-класса (см. §R.9.1).

Если определено имя, которое описывается с помощью спецификации union, то оно должно быть определено как объединение. Если определено имя, которое описывается с помощью спецификации class, то оно должно быть определено с помощью спецификаций class или struct. Если определено имя, которое описывается с помощью спецификации struct, оно должно быть определено с помощью спецификации class или struct. Имена вложенных типов (§R.9.7) должны уточняться именем объемлющего класса:

уточненное-имя-типа:

 имя-typedef

 имя-класса :: уточненное-имя-типа

полное-имя-класса:

 уточненное-имя-класса

 :: уточненное-имя-класса

уточненное-имя-класса:

 имя-класса

 имя-класса :: уточненное-имя-класса

Имя, уточненное именем-класса должно быть типом, определенным в этом классе или в базовом классе этого класса. Как обычно, имя, описанное в производном классе, делает невидимыми члены с этим именем из базовых классов (см. §R.3.2).

R.7.2 Описание перечисления

Перечисление является отдельным целочисленным типом (§R.3.6.1) с константами-именами. Его имя в своей области видимости становится конструкцией имя-перечисления, т.е. служит зарезервированным словом.

имя-перечисления:

Перейти на страницу:

Похожие книги

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT