C++ Оператор приведения
Операторы приведения типов — это специальные операторы, которые преобразуют один тип данных в другой. Операторы приведения типов являются унарными операторами, и их приоритет такой же, как у других унарных операторов.
Большинство компиляторов C++ поддерживают большинство распространённых операторов приведения типов:
(type) expression
Здесь type — это тип данных после преобразования. Ниже перечислены несколько других операторов приведения типов, поддерживаемых C++:
const_cast<type> (expr):Оператор const_cast используется для изменения атрибутов const/volatile типа. За исключением атрибутов const или volatile, целевой тип должен быть таким же, как исходный тип. Этот вид приведения в основном используется для управления атрибутом const переданного объекта; он может добавлять атрибут const или удалять атрибут const.
dynamic_cast<type> (expr):dynamic_cast выполняет преобразование во время выполнения и проверяет допустимость преобразования. Если преобразование не выполняется, преобразование завершается неудачно, и выражение expr вычисляется как null. Когда dynamic_cast выполняет динамическое преобразование, type должен быть указателем на класс, ссылкой на класс или void*. Если type — это тип указателя на класс, то expr также должен быть указателем; если type — это ссылка, то expr также должен быть ссылкой.
reinterpret_cast<type> (expr):Оператор reinterpret_cast изменяет указатель одного типа на указатель другого типа. Он может преобразовывать указатель в целое число или целое число в указатель.
static_cast<type> (expr):Оператор static_cast выполняет нединамические преобразования, без проверок классов во время выполнения, обеспечивающих безопасность преобразования. Например, его можно использовать для преобразования указателя на базовый класс в указатель на производный класс.
Все упомянутые выше операторы приведения типов используются с классами и объектами. Теперь рассмотрите следующий пример, чтобы понять, как использовать простой оператор приведения типов в C++. Скопируйте и вставьте следующую программу на C++ в файл test.cpp, затем скомпилируйте и запустите программу.
Пример
using namespace std;
int main()
{
double a = 21.09399;
float b = 10.20;
int c ;
c = (int) a;
cout << "Line 1 - Value of (int)a is :" << c << endl ;
c = (int) b;
cout << "Строка 2 - Значение (int)b равно :" << c << endl ;
return 0;
}
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
Line 1 - Value of (int)a is :21 Line 2 - Value of (int)b is :10Другие расширения