Статическая функция-член не может быть виртуальной

становится зарезервированным словом в его области видимости

Указатель на функцию можно присваивать указателю типа void*; $$R.4.6

В частности, в некоторых реализациях С могут быть допустимы некоторые несовместимые описания

Тип операнда должен быть арифметическим или указателем

,идентификатор) строка-лексем называется макроопределением с параметрами или “функциональным” макроопределением

Специальные функции-члены

Например, if (i) for (int j = 0; j<100; j++) { //

Такую последовательность лексем, т.е

public: B(int); }; class D : public B { //

Аналогично, только функция-член volatile (т.е

Это относится как к явно описанным объектам, так и ко временным объектам ($$R.12.2)

*/ }; class Zerodivide : public Matherr { /*

Спецификация связи не задает область видимости

Спецификации задают основной тип, класс памяти или другие свойства описываемых объектов и функций

Аналогична ситуация со спецификацией volatile

При рассмотрении разрешения перегрузки ($$R.13.2) такое использование операций не считается стандартным преобразованием операндов

также $$R.3.4, $$R.6.7, $$R.9.4

R.7.2 Описание перечисления Перечисление является отдельным целочисленным типом ($$R.3.6.1) с константами-именами

Оцените этот текст: Бьeрн Страустрап

Классы обсуждаются в $$R.9

R.3.4 Начало и окончание программы Программа должна содержать функцию с именем main()

Команды препроцессора, идущие за этой строкой игнорируются

Фактическими параметрами являются строки лексем, разделенные запятыми

вызывается с одним параметром типа X

Во фрагменте int v[20]; //

Допустимы инициализаторы для статических членов класса; $$R.9.4

Выполняются стандартные целочисленные преобразования

Здесь рассматриваются только области видимости на лексическом уровне, вопросы связывания обсуждаются в $$R.3.3

R.18.1.1 Возможности С++, введенные в 1985 г

R.3.1 Описания и определения Описание ($$r.7) делает известным в программе одно или несколько имен

Гарантируется, что его значение будет отлично от любых других указателей на члены

R.5.6 Мультипликативные операции Мультипликативные операции *, /, и % выполняются слева направо

В программе можно определить или одну из них, или обе

За исключением оговоренных случаев порядок вычисления операндов конкретной операции неопределен

R.6.5 Операторы цикла Эти операторы задают виды цикла

Присваивание объектам класса X ($$R.9) задается функцией X::operator=() ($$R.13.4.3)

Чтобы установить заданное расположение полей с помощью дополнения нулями, используют безымянные битовые поля

Для функции-друга, определенной вне класса, это не так

Его тип определяется его видом ($$R.2.5)

Такую последовательность лексем, т.е

не будет создано тело функции)

Для объектов const или volatile могут вызываться конструкторы ($$R.12.1) и деструкторы ($$R.12.4)

Символьные константы из нескольких символов имеют тип int

Можно описывать безымянные объединения; $$R.9.5

Можно перегружать имена функций; $$R.13

Тогда обращение new int (*[10])(); // error может привести к ошибке, т.к

Иначе, если один из операндов есть float, другой операнд преобразуется в float

Операторы С++, следующие за строкой, в которой выражение оказалось равным нулю, не транслируются

Тип результата есть “T”

В С++ требуется совместимость даже для разных единиц трансляции; $$R.3.3

Приведем пример полного определения функции

также $$R.3.4, $$R.6.7, $$R.9.4

Операция применима только к целочисленным операндам

Эти объекты можно использовать так: X obj; //

Приведем пример: class V { /*

Первый символ должен быть буквой, символ подчеркивания _ считается буквой

К спецификации базового класса можно добавить служебное слово virtual

также $$R.5.5 и $$R.5.3

файл после препроцессорной обработки, называют единицей трансляции

Должно гарантироваться, что argv[argc]==0

Аналогично, необходимо вызывать деструктор для объекта класса, в котором описан деструктор

Проверка происходит после каждого выполнения оператора

Конструкция спецификация-чистой используется только при описании виртуальной функции ($$R.10.2)

*/ } или int main(int argc, char* argv[]) { /*

Отсюда следует, что локальные классы не могут иметь статических членов, представляющих данные

После инициализации значения ci, cpc и cp не могут быть изменены

так же $$R.4.6)

Производятся преобразования указателя на член ($$R.4.8)

Приведем пример: class V { /*

Указатели на соседние элементы массива отстоят на 1

Указатель типа void* считается совместимым с указателем на объект любого типа

$$R.5.3.3 и $$R.12.2

в конец цикла

Управление передается на оператор, следующий непосредственно за заканчиваемым, если такой есть

R.9 классы Класс есть тип

Префиксная операция — сводится к уменьшению на 1 и выполняется аналогично префиксной операции ++

Если его нет, список инициализаторов должен быть полным

Ь American National Standard X3.159-1989

Правила для operator=() даны в $$R.12.8

Например, X::X(const X&) и X::X(X&, int=0) являются конструкторами копирования

R.15.2 Запуск особой ситуации При запуске особой ситуации управление передается обработчику

Точный момент уничтожения определяется реализацией

Конструкция описание-asm объясняется в $$R.7.3, а спецификация-связи в $$R.7.4

Операция применима только к целочисленным операндам

opt список-описаний-парам ,

Есть русский перевод: “Язык программирования С

Конструктор может вызываться для объекта со спецификацией const или volatile

Описаний может быть несколько

Последовательность цифр, начинающаяся с 0x или 0X, считается шестнадцатеричным целым (основание счисления шестнадцать)

так же ($$R.5.4)

Команда вида идентификатор ( идентификатор,

Класс такого объекта называют наибольшим производным классом объекта

R.2.2 Комментарии Символы /* начинают комментарий, который завершается символами */

Служебное слово overload стало излишним и отнесено к разделу анахронизмов; $$R.18.3

Служебное слово long может появиться вместе с double

отбрасыванию дробной части

Очевидным примером адреса будет имя объекта

По умолчанию функция terminate() вызывает abort()

*/ } – тело-функции

Инициализаторы идут в возрастающем порядке индексов или членов агрегата

Над арифметическими операндами выполняются обычные арифметические преобразования

Обычно оператор, с которым имеет дело переключатель, бывает составным

Классы обсуждаются в $$R.9

на размер пяти целых

*/ }; class C { /*

Порядок инициализации статических объектов определяется в $$R.3.4 и $$R.6.7

Операнд операции ~ должен иметь целочисленный тип, результатом будет обращение двоичного представления операнда

Соглашения о лексических понятиях

Такие созданные деструкторы имеют спецификацию public

*/ }; // нормально Здесь объект класса C будет иметь два вложенных объекта класса L

Все побочные эффекты вычисления левого выражения могут возникать до вычисления правого выражения

Все побочные эффекты вычисления первого выражения могут возникать до вычисления второго выражения

Управление особыми ситуациями

Спецификация extern недопустима для членов класса

также $$R.5.5 и $$R.5.3

Аналогична ситуация со спецификацией volatile

Могут быть опущены одно или оба выражения

Обычные арифметические преобразования ($$R.4.5) производятся над операндами и определяют тип результата

Операция sizeof может применяться к указателю на функцию, но не к самой функции

Описание связи, содержащее неизвестную для реализации строку, считается ошибочным

Спецификация связи не задает область видимости

Глобальные безымянные объединения можно описать со спецификацией static

Такие имена называются внешними или говорят, что они имеют внешнее связывание

Операции могут быть перегружены, т.е

Операндом delete должен быть указатель, который возвращает new

так же $$R.8.4)

R.9 классы Класс есть тип

независимо ни от какого объекта

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

Оператор return с выражением можно использовать только в функциях, которые возвращают значение

Тип выражения присваивания совпадает с типом левого операнда

Такие конструкторы являются общими

$$R.5.3.3 и $$R.12.2

С помощью спецификации связывания можно добиться связывания с описаниями на другом языке ($$R.7.4)

Имя класса или перечисления считается именем типа; $$R.9

Вычисление может выдавать в качестве результата значение и может вызывать побочные эффекты

Результат операции .* или ->* является адресом, если второй операнд есть адрес

Поиск указанного файла проходит в определенной последовательности частей архива системы и определяется реализацией

,идентификатор) строка-лексем называется макроопределением с параметрами или “функциональным” макроопределением

Класс считается абстрактным, если в нем есть хотя бы одна чистая виртуальная функция

*/ } }; будет вызываться конструктор B с параметром i

Указатели на соседние элементы массива отстоят на 1

R.5.3.1 Инкремент и декремент Операнд префиксной операции ++ увеличивается на 1

Выполняются стандартные преобразования целочисленных

Больше никаких требований на порядок инициализации объектов из различных единиц трансляции не налагается

Тип выражения присваивания совпадает с типом левого операнда

Это относится как к явно описанным объектам, так и ко временным объектам ($$R.12.2)

Поэтому, несмотря на свой асиметричный вид, индексация – коммутативная операция

Определение должно быть дано в другом месте, см

Назначение конструкции спецификация-доступа объясняется в $$R.11

Обычно можно обойтись без вызова конструктора копирования, например: class complex { //

В отличие от описания класса ($$R.9.1) имя-typedef не добавляет нового типа

[4] Сопоставление с пользовательскими преобразованиями

*/ } B::B(int i) { /*

Назначение конструкции спецификация-доступа объясняется в $$R.11

Бинарная операция * обозначает умножение

также $$R.3.4, $$R.6.7, $$R.9.4

Значит выражение E1->MOS тоже самое, что (*E1).MOS

Конструкторы ($$R.12.1) и деструкторы ($$R.12.4) нельзя описывать со спецификациями const или volatile

Иначе, если стандартные целочисленные преобразования ($$R.4.1) происходят над обоими операндами

Иначе, если один из операндов есть long, другой операнд преобразуется в long

Каждое перечисление является целочисленным типом, который отличен от всех других целочисленных типов

Конструкция спецификация-особой-ситуации предшествует описателю функции

Класс такого объекта называют наибольшим производным классом объекта

Класс такого объекта называют наибольшим производным классом объекта

Тип результата есть “T”

Результатом операции + является сумма операндов

Оператор-выражение с отсутствующим выражением называется пустым оператором

Оцените этот текст: Бьeрн Страустрап

По умолчанию unexpected() вызывает terminate()

Такой класс называют вложенным

Внутри строки перед символом двойной кавычки ” должен идти символ \

Последовательность должна быть согласованной, что объясняется ниже

Обобщенные пробелы, окружающие строку замены, отбрасываются

Значит выражение E1->MOS тоже самое, что (*E1).MOS

Если второе и третье выражение имеют тип void, общий тип будет void

По умолчанию unexpected() вызывает terminate()

в других единицах трансляции

Результат является адресом

Поэтому, несмотря на свой асиметричный вид, индексация – коммутативная операция

*/ }; struct B2 { B2(int); /*

Также и в ANSI C

Конструкция спецификация-особой-ситуации предшествует описателю функции

в других единицах трансляции

Для конструктора не нужно указывать никакого типа возвращаемого значения, даже void

Обобщенные пробелы нужны, чтобы разделить стоящие рядом идентификаторы, служебные слова и константы

Ь American National Standard X3.159-1989

*/ } – тело-функции

opt список-описаний-парам ,

Поиск указанного файла проходит в определенной последовательности частей архива системы и определяется реализацией

Она эквивалентна функции, в описании которой указан тип, соответствующий шаблону, см

Целочисленные типы вместе с типами с плавающей точкой образуют арифметические типы

С помощью операции разрешения области видимости :: ($$R.5.1) к члену базового класса можно обращаться явно

Результатом будет объект или функция с типом, задаваемым вторым операндом

Должно гарантироваться, что argv[argc]==0

Макроимена __LINE__ и __FILE__ можно определить с помощью команды #line ($$R.16.6)

Конструкция спецификации-описания может отсутствовать только в описании функции

Функцию без параметров следует описывать как f(void), а не просто f()

Соглашения о лексических понятиях

Глобальные объекты типа const следует явно специфицировать как static или extern

Конструкция описание-asm объясняется в $$R.7.3, а спецификация-связи в $$R.7.4

*/ }; class X : virtual public B { /*

Операция применима только к целочисленным типам

При повторении таких вызовов будут возвращаться указатели на разные объекты

В описании объектов или функций можно также использовать конструкцию спецификация-сложного-типа ($$R.7.1.6)

*/ } или int main(int argc, char* argv[]) { /*

Все расширения С суммируются в $$R.18.1

Результат является адресом

в этом случае всегда участвует более одного вложенного объекта

[4] Сопоставление с пользовательскими преобразованиями

Все другие сравнения указателей определяются реализацией

Сливаются соседние строки литералов

Операнд должен быть изменяемым адресом

*/ }; // нормально Здесь объект класса C будет иметь два вложенных объекта класса L

*/ }; Здесь описание класса будет использоваться в качестве определения потока символов (stream)

[2] Сопоставление со стандартными преобразованиями основных типов

Это относится как к явно описанным объектам, так и ко временным объектам ($$R.12.2)

Конструктор для массива элементов вызывается в порядке возрастания адресов элементов ($$R.8.2.4)

Отсюда следует, что локальные классы не могут иметь статических членов, представляющих данные

Порядок выделения памяти для базовых классов определяется реализацией

Деструктор может быть виртуальным

} int f(int& r) // ошибка: типы функций { // недостаточно различны //

Если с его помощью функция найдена, вызвать ее

Обобщенные пробелы, окружающие строку замены, отбрасываются

Результатом будет объект или функция с типом, задаваемым вторым операндом

Выполняются стандартные преобразования целочисленных

Очевидным примером адреса будет имя объекта

Идентичное использование невиртуальных базовых классов всегда приводит к неоднозначности, т.к

На описание friend не влияет указание спецификаций-доступа ($$R.9.2)

Последовательность цифр, начинающаяся с 0x или 0X, считается шестнадцатеричным целым (основание счисления шестнадцать)

Имя можно использовать только в пределах части программы, называемой областью видимости имени

Обобщенные пробелы нужны, чтобы разделить стоящие рядом идентификаторы, служебные слова и константы

Результатом унарной операции & будет указатель на ее операнд

Можно перегружать имена функций; $$R.13

так же ($$R.5.4)

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

Не допустима операция взятия адреса конструктора

Объект класса с деструктором не может быть членом объединения

R.16.1 Фазы препроцессорной обработки По определению существует несколько фаз препроцессорной обработки

Есть русский перевод: “Язык программирования С

Каждый комментарий заменяется на один пробел

Ь “The C Programming Language” B

Если объект является массивом, возвращается указатель на начальный элемент массива

Фактическими параметрами являются строки лексем, разделенные запятыми

так же ($$R.5.4)

Таким образом, имя-typedef является синонимом другого типа

Файл состоит из последовательности описаний

Определение шаблона типа для функции используется для создания различных вариантов шаблона типа

Соседние строки литералов конкатенируются

R.5.3 Унарные операции Выражения с унарными операциями выполняются справа налево

y[0][0], y[0][1] и y[0][2]

Иначе, в качестве инициализатора задается с помощью операции = одно значение

Такую последовательность лексем, т.е

Операндом delete должен быть указатель, который возвращает new

R.10.1.1 Неоднозначности Доступ к базовому классу должен быть задан однозначно

В таких случаях оператор считается описанием

Все побочные эффекты вычисления первого выражения могут возникать до вычисления второго выражения

Результат работы препроцессора есть последовательность лексем

так же $$R.4.6)

Полным называется объект, который не является вложенным объектом, представляющим некоторый базовый класс

Спасибо за советы

mr.Garrett

Результат будет адресом, если второй и третий операнд одного типа и являются адресами

_iobuf_iob[_NFILE]; //

Этот список считается списком фактических параметров для вызова конструктора, производящего инициализацию

Приведем пример: class X { //

Деструкторы не наследуются

Американский национальный стандарт

Фигурные скобки разбираются следующим образом

Операция применима только к целочисленным операндам

throw Overflow(’+',x,3.45e107); } может быть перехвачена обработчиком try { //

Обычные арифметические преобразования ($$R.4.5) производятся над операндами и определяют тип результата

Все символы обобщенного пробела, разделяющие лексемы, считаются идентичными

Такую последовательность лексем, т.е

Его имя в своей области видимости становится конструкцией имя-перечисления, т.е

В конструкторе можно вызывать функцию-член, см

Тип void& недопустим

Символы // начинают комментарий, который завершается концом этой строки

Для таких функций или объектов команда связывания игнорируется

R.16.10 Предопределенные макроимена В процессе трансляции определенную информацию содержат следующие предопределенные макроимена

В этом случае недопустимо расхождение даже за счет тривиальных преобразований ($$R.13.2)

goto lx; //ошибка: переход, минуя инициализацию //

Поскольку по умолчанию terminate() вызывает abort(), результатом будет непосредственное и точное обнаружение ошибки

Результат конкатенации обычных и широкосимвольных строк литералов неопределен

class Y { //

“Финансы и статистика”

Любая нераспознанная строка #pragma игнорируется

Оно задает выравнивание следующего битового поля по границе элемента памяти, используемого при размещении полей

Константа из одного символа имеет тип char

Управление особыми ситуациями; $$R.15

Она эквивалентна функции, в описании которой указан тип, соответствующий шаблону, см

Она не наследуется ($$R.12.8)

Она эквивалентна функции, в описании которой указан тип, соответствующий шаблону, см

Если на него получена ссылка, то уничтожать его нельзя, пока существует ссылка

Статические объекты существуют и сохраняют свое значение во все время выполнения программы

Нельзя описывать объекты с типом void

Спецификация extern недопустима для членов класса

Битовые поля должны иметь целочисленный тип ($$R.3.6.1)

Описание статического члена, представляющего данные, в описании класса не считается определением

Это выражение задает число элементов массива

Для таких функций или объектов команда связывания игнорируется

Тип результата int

Связывание main() ($$R.3.3) зависит от реализации

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

Определение должно быть дано в другом месте, см

Команда вида идентификатор ( идентификатор,

R.16.10 Предопределенные макроимена В процессе трансляции определенную информацию содержат следующие предопределенные макроимена

Функция-член const (т.е

Часто такие функции вызываются неявно

Приведенный синтаксис нельзя использовать для определения функций-членов

Если задано “имяфайла”, то значение макроимени __FILE__ ($$R.16.10) становится равным имени указанного файла

*/ }; class AA : public X, public Y, public Z { /*

Такой класс называют вложенным

На одних машинах поля могут выходить за границы этих элементов, на других – нет

После инициализации значения ci, cpc и cp не могут быть изменены

R.5.3.3 Операция new Операция new предназначена для создания объекта типа имя-типа ($$R.8.1)

Порядок инициализации статических объектов определяется в $$R.3.4 и $$R.6.7

Тип результата есть преобразованного операнда

При описании класса виртуальная функция описывается как чистая с помощью спецификации-чистой ($$R.9.2)

Операнд должен быть функцией или адресом или конструкцией уточненное-имя

Сам идентификатор defined нельзя переопределить, нельзя и отменить его определение

Статические члены глобального класса подлежат внешнему связыванию ($$R.3.3)

Приведенный синтаксис нельзя использовать для определения функций-членов

*/ } – тело-функции

Функции-члены могут быть const или volatile; $$R.9.3.1

К нему также можно обращаться с помощью операций доступа к членам

1
Return top