Квалификаторы типа cv (const и volatile)
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google.
Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке. Щёлкните здесь, чтобы увидеть английскую версию этой страницы |
const- определяет, что тип является постоянным'.Оригинал:const- defines that the type is constant.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.volatile- определяет, что типа летучего.Оригинал:volatile- defines that the type is volatile.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.mutable- указывает, что член класса не влияет на внешнее видимое состояние класса.mutableчленами могут быть изменены в постоянном классов, то есть константность по существу игнорируется для конкретного члена.Оригинал:mutable- defines that a member of a class does not affect the externally visible state of the class.mutablemembers can be modified in constant classes, that is constness is essentially ignored for the particular member.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Объяснение
- Примечание: CV-квалификаторы и резюме спецификаторов (список выше) не то же самое thing.
CV-квалификаторы свойства типа, тогда как CV-спецификаторы особенность языка определить CV-квалификаторыОригинал:Note: cv-qualifiers and cv-specifiers (list above) are not the same thing.
The cv-qualifiers are properties of a type whereas cv-specifiers are language feature to define cv-qualifiersТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Cv-отборочных определить два основных свойств типа: константность и волатильности. CV-Qualifer может быть одна из следующих:
'const volatile', 'const', 'volatile' или 'none'. const определяет, что типа постоянные, volatile определяет, что типа летучего. Номера для постоянного и энергонезависимой типа имеет никаких дополнительных ограничений, в то время как постоянное и летучих вытекает следующее:Оригинал:
Cv-qualifiers define two basic properties of a type: constness and volatility. A cv-qualifer can be one of the following:
'const volatile', 'const', 'volatile' or 'none'. const defines that a type is constant, volatile defines that the type is volatile. Non-constant and non-volatile type has no additional restrictions, whereas constant and volatile imply the following:Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
- Постоянная - объект не должен быть изменен. Попытка сделать это приводит к неопределенному поведению. На большинстве компиляторов это ошибка времени компиляции.Оригинал:constant - the object shall not be modified. Attempt to do so results in undefined behavior. On most compilers it is compile-time error.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - Летучего - объект может быть изменен с помощью не обнаруживается компилятором, и, таким образом некоторых оптимизаций компилятора должны быть отключены.Оригинал:volatile - the object can be modified by means not detectable by the compiler and thus some compiler optimizations must be disabled.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Существует частичное упорядочение CV-квалификаторы в порядке возрастания ограничений. Тип можно сказать, больше или меньше резюме квалифицированных тогда:
Оригинал:
There is partial ordering of cv-qualifiers by the order of increasing restrictions. The type can be said more or less cv-qualified then:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
- Неквалифицированных <
constОригинал:unqualified <constТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - Неквалифицированных <
volatileОригинал:unqualified <volatileТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - Неквалифицированных <
const volatileОригинал:unqualified <const volatileТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. -
const<const volatile -
volatile<const volatile
-
Любой CV-квалификаторы являются частью определения типа, следовательно, с разными типами CV-квалификация всегда разные типы. Поэтому литье, необходимое для соответствия типов при назначении переменных, вызов функций и т.д. Только приведение к более CV-квалифицированных типа делается автоматически, как часть
неявные преобразования
. В частности, следующие преобразования допускаетсяОригинал:
implicit conversions
Текст был переведён автоматически используя [http://translate.google.com Переводчик Google].
Вы можете проверить и исправить перевод. Для инструкций щёлкните [http://en.cppreference.com/w/Cppreference:MachineTranslations сюда].
Вы можете проверить и исправить перевод. Для инструкций щёлкните [http://en.cppreference.com/w/Cppreference:MachineTranslations сюда].
Оригинал:
Any cv-qualifiers are part of the type definition, hence types with different cv-qualifications are always different types. Therefore casting is needed to match types when assigning variables, calling functions, etc. Only casting to more cv-qualified type is done automatically as part of implicitly converted. In particular, the following conversions are allowed:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
- Неквалифицированный тип может быть преобразован в
constОригинал:unqualified type can be converted toconstТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - Неквалифицированный тип может быть преобразован в
volatileОригинал:unqualified type can be converted tovolatileТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - Неквалифицированный тип может быть преобразован в
const volatileОригинал:unqualified type can be converted toconst volatileТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. -
constтипа могут быть преобразованы вconst volatileОригинал:consttype can be converted toconst volatileТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. -
volatileтипа могут быть преобразованы вconst volatileОригинал:volatiletype can be converted toconst volatileТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
-
Чтобы преобразовать в CV-менее квалифицированных типа, const_cast должны использоваться.
Оригинал:
To convert to a less cv-qualified type, const_cast must be used.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Ключевые слова
[править] Пример
| Этот раздел не завершён |

