C++ language
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
Это краткий список языковых конструкций, доступных в C++.
Содержание |
[править] Общие темы
[править] Препроцессор
[править] Комментарии
[править] Ключевые слова
[править] Таблица ASCII
[править] Управляющие последовательности
[править] История C++
[править] Управление выполнением
[править] Инструкции условного выполнения
Условные инструкции выполняют различные пути кода в соответствии со значением данного выражения.
- if выполняет код условноOriginal:if executes code conditionallyThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - switch выполняет код в соответствии со значением целочисленного аргумента
[править] Инструкции циклов
Инструкции циклов выполняют путь кода несколько раз.
- for выполняет циклы с указанием инициализации, сравнения и приращения
- range-for выполняет циклы по диапазону (начиная с C++11)}
- while выполняет цикл, проверяя условие перед каждой итерацией
- do-while выполняет цикл, проверяя условие после каждой итерации
[править] Инструкции перехода
Инструкции перехода продолжают выполнение программы с другого места.
- continue пропускает оставшуюся часть тела содержащего цикла
- break завершает содержащий цикл
- goto продолжает выполнение с другого места
- return завершает выполнение содержащей функции
[править] Функции
Один и тот же код может быть повторно использован в различных местах в программе.
- объявления функций объявляют функции
- объявления лямбда-функций объявляют лямбда-функции (начиная с C++11)
- шаблоны функций объявляют шаблоны функций
- спецификатор inline подсказывает компилятору вставить тело функции непосредственно в вызывающий код
- спецификаторы исключений указывают, что функция выбрасывает только конкретные исключения (устарело)
- спецификатор noexcept указывает, выбрасывает ли функция исключения (начиная с C++11)
[править] Исключения
Исключения представяют собой способ передачи сигналов об ошибочных состояниях, более надежный, чем коды возврата функций или глобальные переменные ошибок.
- выражения throw сигнализируют об ошибках и передают управление обработчикам ошибок
- блоки try-catch ловят исключения, происходящие в определённых блоках кода
- спецификатор noexcept и оператор noexcept указывают и проверяют, может ли выражение выбросить исключение (начиная с C++11)
[править] Пространства имён
Пространства имён дают возможность предотвратить конфликты имён в больших проектах.
- объявления пространств имён обьявляют пространства имён
- псевдонимы пространств имён объявляют альтернативные имена для существующих пространств имён
[править] Типы
- фундаментальные типы определяют базовые типы символов, целых чисел и чисел с плавающей точкой
- типы указателей оопределяют типы, указывающие на местоположения в памяти
- составные типы определяют типы, содержащие несколько полей-членов (по сути, то же самое, что и класс)
- типы перечислений которые могут хранить только одно из указанных значений
- типы объединений определяют типы, которые могут хранить данные в нескольких представлениях
- типы функций определяют подписи вызовов функций, то есть типы аргументов и возвращаемого значения
- спецификатор decltype определяет тип, эквивалентный типу выражения (начиная с C++11)
[править] Спецификаторы
- cv-спецификаторы указывают константность и нестабильность типовOriginal:<div class="t-tr-text"> резюме спецификаторов</div> specify constness and volatility of typesOriginal:cv specifiersThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - спецификаторы длительности хранения указывают длительность хранения типов
- спецификатор constexpr указывает, что значение переменной или функции может быть вычислено во время компиляции (начиная с C++11)
- спецификатор auto указывает, что фактический тип определяется из выражения, присваиваемого переменной (начиная с C++11)
- спецификатор alignas указывает, что место хранения переменной должно быть выровнено определённым образом (начиная с C++11)
[править] Инициализация
Всякий раз, когда объявляется переменная, имеющая имя, и когда создаётся временный объект, изначальное значение нового объекта предоставляется одним из следующих способов:
- инициализация по умолчанию происходит, когда инициализатор отсутствует
- инициализация значением происходит, когда инициализатор – пустой набор круглых скобок
- инициализация нулём инициализирует каждый бит объекта к нулём
- инициализация копией инициализирует объект из другого объекта
- прямая инициализация предоставляет в круглых скобках начальное значения или аргументы конструктора
- инициализация агрегации предоставляет начальные значения для каждого члена массива или структуры без конструктора
- инициализация списком предоставляет список значений произвольной длины, который может инициализировать std::vector или std::map (начиная с C++11)
- инициализация константой инициализирует все константные статические объекты прежде, чем всё остальное
- инициализация ссылок привязывает ссылки к объектам и продлевает время жизни временных объектов
[править] Литералы
Литералы – это лексемы программы на C++, обозначающие константные значения, встроенные в исходный код.
- целочисленные литералы – это десятичные, восьмеричные или шестнадцатеричные числа целого типа.
- литералы символов – это отдельные символы типа char, char16_t, char32_t или wchar_t
- литералы с плавающей точкой – это значения типа float, double или long double
- строковые литералы – это последовательности символов, которые могут быть узкими, многобайтовыми или широкими
- логические литералы – это значения типа bool, то есть true и false
- nullptr – это литерал указателя, обозначающий значение нулевого указателя (начиная с C++11)
- литералы, определённые пользователем, – это константные значения типа, указываемого пользователем (начиная с C++11)
[править] Выражения
Выражение – это последовательность операторов и операндов, задающая вычисление. Выражение может иметь своим результатом значение и может вызывать побочные эффекты.
- категории значений (lvalue, rvalue, glvalue, prvalue, xvalue) классифицируют выражения по их значениям
- порядок вычисления аргументов и подвыражений задаёт порядок, в котором определяются промежуточные результаты
- операторы позволяют использовать синтаксис, часто встречающийся в математике
| Common operators | ||||||
|---|---|---|---|---|---|---|
| назначение | incrementNJdecrement | арифметики | логичной | сравнение | memberNJaccess | другие |
|
a = b |
++a |
+a |
!a |
a == b |
a[b] |
a(...) |
| Special operators | ||||||
|
static_cast преобразует один тип на другой совместимый
типа Original: static_cast converts one type to another compatible type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. dynamic_cast преобразует виртуальный базовый класс для производных class
Original: dynamic_cast converts virtual base class to derived class The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. const_cast преобразует тип совместимого типа с различными cv qualifiers
Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. reinterpret_cast преобразует тип несовместимы type
Original: reinterpret_cast converts type to incompatible type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. new выделяет memory
Original: new allocates memory The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. delete освобождает memory
Original: delete deallocates memory The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. sizeof запрашивает размер type
Original: sizeof queries the size of a type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. sizeof... запрашивает размер Параметр пакета (начиная с C++11)
Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. typeid запрашивает сведения о типе type
Original: typeid queries the type information of a type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. noexcept проверяет выражение может вызвать исключение (начиная с C++11)
Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. alignof запросов выравнивание требований типа (начиная с C++11)
Original: alignof queries alignment requirements of a type (начиная с C++11) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | ||||||
- определяет порядок, в котором операторы обязаны своим аргументамOriginal:операторов</div> defines the order in which operators are bound to their argumentsOriginal:operator precedenceThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - альтернативных написаний для некоторых операторов Original:альтернативных представлений</div> are alternative spellings for some operatorsOriginal:alternative representationsThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[править] Utilities
You can help to correct and verify the translation. Click here for instructions.
- создавать синонимы для типовOriginal:ЬурейеЕ деклараций</div> create synonyms for typesOriginal:typedef declarationsThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - создавать синонимы для типовOriginal:псевдонима типа декларации</div> create synonyms for typesOriginal:type alias declarationsThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - определить дополнительную информацию о (начиная с C++11) переменныхOriginal:атрибутов</div> define additional information about variables (начиная с C++11)Original:attributesThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- неявные преобразования из одного типа в другойOriginal:стандартные преобразования</div> implicit conversions from one type to anotherOriginal:standard conversionsThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - <div class="t-tr-text">
const_castпреобразования</div>Original:const_castconversionThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions. - <div class="t-tr-text">
static_castпреобразования</div>Original:static_castconversionThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions. - <div class="t-tr-text">
dynamic_castпреобразования</div>Original:dynamic_castconversionThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions. - <div class="t-tr-text">
reinterpret_castпреобразования</div>Original:reinterpret_castconversionThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions. - преобразования с помощью C-нотации литых и функциональных обозначенийOriginal:явное приведение</div> conversion using C-style cast notation and functional notationOriginal:explicit castThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- выделяет память динамическиOriginal:новое выражение</div> allocates memory dynamicallyOriginal:new expressionThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - освобождает память динамическиOriginal:удалить выражение</div> deallocates memory dynamicallyOriginal:delete expressionThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[править] Классы
You can help to correct and verify the translation. Click here for instructions.
- объявить классыOriginal:Класс деклараций</div> declare classesOriginal:class declarationsThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - ссылки на текущий экземпляр класса в члены методамиOriginal:
thisуказатель</div> links to the current instance of a class in member methodsOriginal:thispointerThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - определить видимость членов классаOriginal:спецификаторы доступа</div> determine visibility of class membersOriginal:access specifiersThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - предоставляет права доступа к частным / охраняемой части, не являющихся членами класса или функцииOriginal:спецификатор друга</div> grants access privileges to private/protected parts for non-member classes or functionsOriginal:friend specifierThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - инициализировать данные члена классаOriginal:Инициализатор списки</div> initialize class member dataOriginal:initializer listsThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[править] Класс специфических свойств функции
- заявляет, что функция является виртуальнойOriginal:виртуальные спецификатор функции</div> declares that a function is virtualOriginal:virtual function specifierThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - заявляет, что виртуальная функция наслаивается на другую виртуальную function.(начиная с C++11)Original:спецификатор переопределения</div> declares that a virtual function overrides another virtual function.(начиная с C++11)Original:override specifierThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - заявляет, что виртуальная функция не может быть переопределен в class.(начиная с C++11) наследованияOriginal:Окончательный спецификатор</div> declares that a virtual function can not be overridden in a inheriting class.(начиная с C++11)Original:final specifierThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - заявляет, что конструктор или оператор преобразования не могут быть использованы в неявной (начиная с C++11) преобразованийOriginal:явный спецификатор функции</div> declares that a constructor or conversion operator can not be used in implicit conversions (начиная с C++11)Original:explicit function specifierThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - заявляет, что функция не использует данные классаOriginal:статического спецификатор функции</div> declares that a function does not use class dataOriginal:static function specifierThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - заявляет, что функция-член может быть использован только на резюме квалифицированными объектамиOriginal:резюме функции спецификатор</div> declares that a member function can only be used on cv qualified objectsOriginal:cv function specifierThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[править] Специальные функции члена
- инициализирует объект по умолчанию содержимоеOriginal:конструктор по умолчанию</div> initializes the object with default contentsOriginal:default constructorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - инициализирует объект с содержимым другого объектаOriginal:Конструктор копирования</div> initializes the object with the contents of another objectOriginal:copy constructorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - инициализирует объект с содержанием другой, временный объект, сводя к минимуму (начиная с C++11) копирование накладных расходовOriginal:двигаться конструктор</div> initializes the object with the contents of other, temporary object, minimizing copying overhead (начиная с C++11)Original:move constructorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - заменяет содержимое объекта с содержимым другого объектаOriginal:оператор присваивания</div> replaces the contents of the object with the contents of another objectOriginal:assignment operatorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - заменяет содержимое объекта с содержимым других, временный объект, сводя к минимуму (начиная с C++11) копирование накладных расходовOriginal:двигаться оператор присваивания</div> replaces the contents of the object with the contents of other, temporary object, minimizing copying overhead (начиная с C++11)Original:move assignment operatorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - релизы утверждал ресурсовOriginal:деструктор</div> releases claimed resourcesOriginal:destructorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[править] Шаблоны сайтов
You can help to correct and verify the translation. Click here for instructions.
- заявляет шаблона классаOriginal:Декларация класса шаблона</div> declares a class templateOriginal:class template declarationThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - объявляет функцию шаблонаOriginal:Декларация функции шаблона</div> declares a function templateOriginal:function template declarationThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - определяет существующий шаблон для определенного типаOriginal:Шаблон специализации</div> defines an existing template for a specific typeOriginal:template specializationThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - позволяет использовать списки типов в (начиная с C++11) шаблоновOriginal:Параметр пакеты</div> allows the use of lists of types in templates (начиная с C++11)Original:parameter packsThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[править] Оптимизации
- позволяет любому преобразования кода, который не изменяется на выходеOriginal:Как, если правила</div> allows any code transformation that doesn't change the outputOriginal:The as-if ruleThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - , в том числе РВО и NRVO, делает проход по значению предпочтительный подход во многих ситуациях.Original:Копировать элизии</div>, including RVO and NRVO, makes pass-by-value the preferred approach in many situations.Original:Copy elisionThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - делает множественное наследование интерфейсов от классов или политика без накладных и требуется для стандартной верстки типа.Original:Пустые оптимизации базы</div> makes multiple inheritance from interfaces or policy classes overhead-free and is required for standard-layout types.Original:Empty base optimizationThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[править] Разное
- позволяет использовать код сборки наряду с C + + кодаOriginal:Встроенный ассемблер</div> allows the use of assembly code alongside C++ codeOriginal:Inline assemblyThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.