Rzutowanie za pomocą funkcji reinterpret_cast
Stronę tą wyświetlono już: 1680 razy
Funkcja szablonowa reinterpret_cast umożliwia rzutowanie wskaźnika jednego typu na drugi. Takie rzutowanie konieczne jest np. gdy dane są ściągane z internetu w postaci ciągu znaków char a przesyłane dane są innego typu np. typu prostego int lub typu strukturalnego. Oto przykład rzutowania tego typu:
- char data[] = "somedata";
- int *dataInt = reinterpret_cast<int*>(data);
- std::cout << "Data " << dataInt[0] << std::endl;
- dataInt[1] = 90;
- std::cout << "Data " << dataInt[1] << std::endl;
- std::cout << data;
W powyższym kodzie zmienna data zawiera dane w postaci tablicy znaków. Tablica ta składa się z 9-ciu elementów (tekst + znak 0 (czyli znacznik końca tekstu). Następnie zachodzi reinterpretacja wskaźnika char* na int*. W linijce 3 zmiana wartości stojącej za drugim indeksem uzyskanego wskaźnika powoduje zmianę zawartości zmiennej data. Ponieważ int ma rozmiar czterech bajtów to zmienna dataInt wskazuje na początek tablicy dwuelementowej typu int.
Wynik działania powyższego kodu będzie więc następujący:
Data 1701670771 Data 90 someZ4

Tytuł:
Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów
Autor:
Adrian Ostrowski, Piotr Gaczkowski

Tytuł:
Opus magnum C++ 11. Programowanie w języku C++. Wydanie II poprawione (komplet)
Autor:
Jerzy Grębosz

Tytuł:
Programowanie wieloplatformowe z C++ i wxWidgets 3
Autor:
Bartosz W. Warzocha

Tytuł:
Język C++ i przetwarzanie współbieżne w akcji. Wydanie II
Autor:
Anthony Williams

Tytuł:
C++ dla bystrzaków. Wydanie VII
Autor:
Stephen R. Davis

Tytuł:
Tablice informatyczne. Podstawy C++
Autor:
Radosław Sokół

Tytuł:
Opus magnum C++11. Programowanie w języku C++ (komplet)
Autor:
Jerzy Grębosz

Tytuł:
OpenCV 3. Komputerowe rozpoznawanie obrazu w C++ przy użyciu biblioteki OpenCV
Autor:
Adrian Kaehler, Gary Bradski

Tytuł:
C++ w 24 godziny. Wydanie VI
Autor:
Rogers Cadenhead, Jesse Liberty

Tytuł:
C++ Optymalizacja kodu. Sprawdzone techniki zwiększania wydajności
Autor:
Guntheroth Kurt